Python Datetime Examples
Last updated:- Build new Date object
- Get current date
- Date to ISO 8601 string
- Date to string, custom format
- Date to string, no zero-padding
- String to Date
- New Datetime object
- Current datetime
- Datetime to ISO 8601 String
- String to Datetime
- Datetime to string
- Datetime to Date
- ISO 8601 string to Datetime
- Current timestamp in milliseconds
- Get day of month from date object
- Get day of week from date
- Truncate date to start of week
Unless otherwise noted Python version 3.6+ is used in all examples.
For examples on date arithmetic, see Python Date/Datetime Arithmetic Examples: Adding, Subtracting, etc
Build new Date object
All three arguments (year, month, day) are required.
Use date(year,month,day)
from datetime import date
# december 25th, 2018
d = date(2018, 12, 25)
# datetime.date(2018, 12, 25)
Get current date
Use date.today()
from datetime import date
d = date.today()
d
#datetime.date(2018, 11, 11)
Date to ISO 8601 string
Call .isoformat()
on the date object.
from datetime import date
d = date(2002, 12, 4)
print(d.isoformat())
# '2002-12-04'
Date to string, custom format
Call .strftime(<format>)
on the date object.
from datetime import date
d = date(2002, 12, 4)
print(d.strftime("%A, %b %d %Y"))
# Wednesday, Dec 04 2002
Date to string, no zero-padding
Use %-d
to disable zero-padding:
from datetime import date
d = date(2002, 12, 4)
print(d.strftime("%A, %b %-d %Y"))
# Wednesday, Dec 4 2002
String to Date
Convert an ISO 8601 date string ("YYYY-MM-DD"
) into a Date
object.
Solution: Read it into a Datetime
using strptime()
then build a new Date
object from that.
Example: read the string "2019-10-20"
into a Date
object
from datetime import date,datetime
# read the string into a datetime object
dt=datetime.strptime("2019-10-20", "%Y-%m-%d")
# >>> datetime.datetime(2019, 10, 20, 0, 0)
# then build a date object
d = date(dt.year,dt.month,dt.day)
# >>> datetime.date(2019, 10, 20)
New Datetime object
TEMPLATE: datetime(<year>, <month>, <day>, <hour>, <minute>, <seconds>)
from datetime import datetime
# May 10, 2016 at 12:30:00
obj = datetime(2016,5,10,12,30,0,0)
# datetime.datetime(2016, 5, 10, 12, 30)
Current datetime
Use datetime.now()
from datetime import datetime
dt = datetime.now()
dt
# datetime.datetime(2018, 11, 11, 17, 56, 2, 701694)
Datetime to ISO 8601 String
The ISO format for timestamps has a 'T'
separating the date from the time part.
Use .isoformat()
:
from datetime import datetime
dt = datetime.now()
dt.isoformat()
# >>> '2020-02-25T01:19:18.900361'
String to Datetime
View all strptime formats here
Use datetime.strptime(date_string, format_string)
from datetime import datetime
# 1st of December, 2016
date_str = "01-12-2016 12:34:56"
format = "%d-%m-%Y %H:%M:%S"
datetime_obj = datetime.strptime(date_str,format)
datetime_obj
# datetime.datetime(2016, 12, 1, 12, 34, 56)
Datetime to string
from datetime import datetime
obj = datetime(2016,5,10,12,30,0,0)
print(obj.strftime('%d %b, %Y %H:%M:%S'))
# '10 May, 2016 12:30:00'
Datetime to Date
Use the default date constructor: date(year,month,day)
from datetime import date,datetime
dt = datetime.now()
# >>> 2019-10-20 15:53:19.085418
# get year, month and day form the datetime object
d = date(dt.year,dt.month,dt.day)
# >>> 2019-10-20
ISO 8601 string to Datetime
On Python 3.7+, use
datetime.fromisoformat()
instead
Use strptime
with this format: "%Y-%m-%dT%H:%M:%S.%f"
Example: read "2019-10-20T15:54:53.840416" into a datetime
object
from datetime import datetime
dt = datetime.now()
iso_datetime_string = dt.isoformat()
# >>> '2019-10-20T15:54:53.840416'
datetime.strptime(iso_datetime_string,"%Y-%m-%dT%H:%M:%S.%f")
# >>> datetime.datetime(2019, 10, 20, 15, 54, 53, 840416)
Current timestamp in milliseconds
import time
current_millis = int(round(time.time() * 1000))
current_millis
# 1541966251776
Get day of month from date object
from datetime import date
today = date.today()
# >>> datetime.date(2019, 4, 29)
today.day
# >>> 29
Get day of week from date
Method | Day numbers |
---|---|
isoweekday() | Monday is 1, Sunday is 7 |
weekday() | Monday is 0, Sunday is 6 |
Example date: 29 April, 2019 is a Monday.
from datetime import date
d = date.today()
# >>> datetime.date(2019, 4, 29)
# with weekday(), 0 means monday
d.weekday()
# >>> 0
# with isoweekday(), 1 means monday
d.isoweekday()
# >>> 1
Truncate date to start of week
This assumes the start of the week is Sunday.
Subtract the date by: timedelta(days = (dt.weekday() + 1) % 7)
Example:
from datetime import date, timedelta
# April 7 2020 is a Tuesday
dt = date(2020,4,7)
# calculate the start of the week.
dt_start_of_week = dt - timedelta(days = (dt.weekday() + 1) % 7)
# April 5 2020 is the start of the Week (sunday)
dt_start_of_week
# >>> datetime.date(2020, 4, 5)
References
-
- Good reference for all formats for use with
strftime
,strptime
, etc.
- Good reference for all formats for use with