Skip to content

Date

Date representation

Code

from datetime import date

Create

Action Code Details
From ymd
date(year, month, day)
Current date
date.today()
Unix epoch date
date.fromtimestamp(0)
Date from any valid ISO 8601 date string
date.fromisoformat(date_string)
e.g., 2023-01-30 or 20230130
Date from YYYY-MM-DD string
datetime.strptime(datetime_str, '%y-%m-%d').date()
Date from DD-MMM-YYYY string
datetime.strptime(datetime_str, '%d-%b-%y').date()
From total seconds since Unix epoch
date.fromtimestamp(n)
From total days since Unix epoch
date.fromtimestamp(0) + timedelta(n)
From total days since reference date
ref_date + timedelta(n)

Constants

Action Code Details
Earliest representable date
date.min
Latest representable date
date.max

Test

Action Code Details
Is date
isinstance(x, datetime.date)
Same date
x == y
Happens before y
x < y
Happens after y
x > y

Extract

Action Code Details
Days from Unix epoch
(x - date.fromtimestamp(0)).days
Seconds from Unix epoch (timestamp)
(x - date.fromtimestamp(0)).total_seconds()
Year
x.year
Month
x.month
Day
x.day
Weekday number
x.isoweekday()
Mon=1, Sun=7
Weekday number (zero-based)
x.weekday()
Mon=0, Sun=6

Difference between dates

Action Code Details
Difference between dates, as timedelta
x - y
Difference between dates, in seconds
(x - y).total_seconds()
Difference between dates, in whole days
?
Difference between dates, in years
x.year - y.year - ((x.month, x.day) < (y.month, y.day))

Derive

Action Code Details
Shift forward by n days
x + timedelta(days=n)

Convert

Action Code Details
Datetime
?
Timestamp (Unix epoch)
(x - date.fromtimestamp(0)).total_seconds()
Format date as ISO 8601
x.isoformat()
e.g., 2023-01-01
Format date as YYYY-MM-DD
x.isoformat()
e.g., 2024-01-31
Format datetime as DD-MMM-YYYY
x.strftime('%d-%b-%Y')
e.g., 31-Jan-2023
Format readable datetime of consistent length
x.ctime()
e.g., Sun Jan 1 23:59:00 2023
Named tuple
x.timetuple()