为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

明月笑刀无情 2024-01-04 09:51:01
我有日期时间字符串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+???')
查看完整描述

2 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

您正在寻找%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)。


查看完整回答
反对 回复 2024-01-04
?
ITMISS

TA贡献1871条经验 获得超8个赞

该dateutil.parser函数将解析该时区格式:


from dateutil.parser import parse


dt = parse('2020-10-23T11:50:19+00:00')

print(dt.date())

print(dt.time())

print(dt.tzinfo)

结果:


2020-10-23

11:50:19

tzutc()

如果您需要的话,您可以将单独的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


查看完整回答
反对 回复 2024-01-04
  • 2 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信