如何将带时区的日期字符串转换为 python 中的日期时间
How to convert date string with timezone to datetime in python
我需要比较两个日期字符串,为此,我需要将日期字符串转换为日期时间对象。日期字符串的示例是“2015-08-23T03:36:30-05:00”。我假设“-05:00”是时区字符串。我可以使用以下方法将字符串转换为日期时间:
import datetime
str = '2015-08-23T03:36:30-05:00'
datetime.datetime.strptime(str,"%Y-%m-%dT%H:%M:%S-%f:00")
我可以看到 microsecond
的值是 50000
这对我来说似乎是错误的,因为 -5:00 值是时区。当我将比较两个日期时间时,正确的解析方法是什么?
您可以使用 %z
来解析时区信息:
>>> from datetime import datetime, timezone
>>> datetime.strptime(str, "%Y-%m-%dT%H:%M:%S%z")
datetime.datetime(2015, 8, 23, 3, 36, 30, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400)))
然后,如果您想将此日期时间转换为 UTC(我假设这是您的目标,因为您说您想要比较日期时间),您可以使用 astimezone
方法:
>>> datetime.strptime(str, "%Y-%m-%dT%H:%M:%S%z").astimezone(timezone.utc)
datetime.datetime(2015, 8, 23, 8, 36, 30, tzinfo=datetime.timezone.utc)
返回字符串格式:
>>> datetime.strptime(str, "%Y-%m-%dT%H:%M:%S%z").astimezone(timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
'2015-08-23 08:36:30'
我需要比较两个日期字符串,为此,我需要将日期字符串转换为日期时间对象。日期字符串的示例是“2015-08-23T03:36:30-05:00”。我假设“-05:00”是时区字符串。我可以使用以下方法将字符串转换为日期时间:
import datetime
str = '2015-08-23T03:36:30-05:00'
datetime.datetime.strptime(str,"%Y-%m-%dT%H:%M:%S-%f:00")
我可以看到 microsecond
的值是 50000
这对我来说似乎是错误的,因为 -5:00 值是时区。当我将比较两个日期时间时,正确的解析方法是什么?
您可以使用 %z
来解析时区信息:
>>> from datetime import datetime, timezone
>>> datetime.strptime(str, "%Y-%m-%dT%H:%M:%S%z")
datetime.datetime(2015, 8, 23, 3, 36, 30, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400)))
然后,如果您想将此日期时间转换为 UTC(我假设这是您的目标,因为您说您想要比较日期时间),您可以使用 astimezone
方法:
>>> datetime.strptime(str, "%Y-%m-%dT%H:%M:%S%z").astimezone(timezone.utc)
datetime.datetime(2015, 8, 23, 8, 36, 30, tzinfo=datetime.timezone.utc)
返回字符串格式:
>>> datetime.strptime(str, "%Y-%m-%dT%H:%M:%S%z").astimezone(timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
'2015-08-23 08:36:30'