fromdatetimeimportdatetime# datetime doesn't support nanosecond
dt1=datetime(2022,4,25,10,30,15,microsecond=500)
Create datetime object with timezone
fromdatetimeimportdatetime# ZoneInfo is supported since Python 3.9
fromzoneinfoimportZoneInfo# datetime doesn't support nanosecond
dt1=datetime(2022,4,25,10,30,15,microsecond=500,tzinfo=ZoneInfo('America/New_York'))
Create datetime object of current time
fromdatetimeimportdatetime# ZoneInfo is supported since Python 3.9
fromzoneinfoimportZoneInfo# no timezone is set to dt1
dt1=datetime.now()# New York timezone is set to dt2
dt2=datetime.now(ZoneInfo('America/New_York'))
Create datetime object of same instant with another timezone
fromdatetimeimportdatetime# ZoneInfo is supported since Python 3.9
fromzoneinfoimportZoneInfo# dt1: 2022-04-25 10:30:15 EDT
dt1=datetime(2022,4,25,10,30,15,500,ZoneInfo('America/New_York'))# dt2: 2022-04-25 23:30:15 JST
dt2=dt1.astimezone(ZoneInfo('Asia/Tokyo'))
Convert string without timezone to datetime object
fromdatetimeimportdatetimepattern1='%Y-%m-%d %H:%M:%S.%f'dt_str1='2022-04-25 10:30:15.000500'dt1=datetime.strptime(dt_str1,pattern1)# if microsecond field has 3 digits only, it will be treated as milliseconds
dt_str2='2022-04-25 14:30:15.100'# dt2: 2022-04-25 14:30:15.100000
dt2=datetime.strptime(dt_str2,pattern1)
Convert string with UTC offset to datetime object
fromdatetimeimportdatetime# Use '%z' to parse utc offset
pattern1='%Y-%m-%d %H:%M:%S.%f %z'dt_str1='2022-04-25 10:30:15.000500 -04:00'dt1=datetime.strptime(dt_str1,pattern1)