带 tz 偏移量的日期时间的 strptime 示例

我有日期时间字符串2020-10-23T11:50:19+00:00。我可以在没有时区的情况下将其解析为:

>>> datetime.strptime('2020-10-23T11:50:19', '%Y-%m-%dT%H:%M:%S')
datetime.datetime(2020, 10, 23, 11, 50, 19)

00:00但我在用时区版本解析它时遇到问题。正确的方法是什么?

>>> datetime.strptime('2020-10-23T11:50:19+00:00', '%Y-%m-%dT%H:%M:%S+???')


明月笑刀无情
浏览 126回答 2
2回答

慕田峪7331174

您正在寻找%z:>>> datetime.strptime('2020-10-23T11:50:19+00:00', '%Y-%m-%dT%H:%M:%S%z') datetime.datetime(2020, 10, 23, 11, 50, 19, tzinfo=datetime.timezone.utc)请注意一些 Python 版本兼容性说明:版本 3.7 中的更改:当%z向方法提供指令时strptime(),UTC 偏移量可以使用冒号作为小时、分钟和秒之间的分隔符。例如,'+01:00:00'将被解析为一小时的偏移量。此外,提供'Z'与 相同'+00:00'。更强大的方法,它不是strptime,但自 Python 3.7 以来它仍然在 stdlib 中:>>> datetime.fromisoformat('2020-10-23T11:50:19+00:00') datetime.datetime(2020, 10, 23, 11, 50, 19, tzinfo=datetime.timezone.utc)如文档所述,该函数支持以下格式的字符串:YYYY-MM-DD[*HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]]其中 * 可以匹配任何单个字符(不仅仅是 T)。

ITMISS

该dateutil.parser函数将解析该时区格式:from dateutil.parser import parsedt = parse('2020-10-23T11:50:19+00:00')print(dt.date())print(dt.time())print(dt.tzinfo)结果:2020-10-2311:50:19tzutc()如果您需要的话,您可以将单独的date,time和tzinfo对象组合成 a datetime,如下所示:dt = datetime.combine(dt.date(), dt.time(), tzinfo=dt.tzinfo)print(dt)结果:2020-10-23 11:50:19+00:00
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python