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

如何解析ISO 8601格式的日期?

如何解析ISO 8601格式的日期?

慕少森 2019-06-04 17:31:24
如何解析ISO 8601格式的日期?我需要解析RFC 3339字符串,如"2008-09-03T20:56:35.450686Z"变成Python的datetime类型。我发现strptime在Python标准库中,但是不太方便。做这件事最好的方法是什么?
查看完整描述

3 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

这个Python-dateutil包不仅可以像问题中的那样解析rfc 3339日期时间字符串,还可以解析其他字符串。ISO 8601不符合RFC 3339的日期和时间字符串(例如没有UTC偏移量的字符串或仅表示日期的字符串)。

>>> import dateutil.parser>>> dateutil.parser.parse('2008-09-03T20:56:35.450686Z') # RFC 3339 formatdatetime.datetime
(2008, 9, 3, 20, 56, 35, 450686, tzinfo=tzutc())>>> dateutil.parser.parse('2008-09-03T20:56:35.450686')
 # ISO 8601 extended formatdatetime.datetime(2008, 9, 3, 20, 56, 35, 450686)>>> dateutil.parser.parse('20080903T205635.450686')
  # ISO 8601 basic formatdatetime.datetime(2008, 9, 3, 20, 56, 35, 450686)>>> dateutil.parser.parse('20080903') 
  # ISO 8601 basic format, date onlydatetime.datetime(2008, 9, 3, 0, 0)

请注意,dateutil.parser故意作呕:它试图猜测格式,并在模棱两可的情况下做出不可避免的假设(只能手工定制)。因此,只有当您需要解析未知格式的输入,并且可以容忍偶尔的误读时,才可以使用它。

Pypi的名字是python-dateutil,不是dateutil:

pip install python-dateutil



查看完整回答
反对 回复 2019-06-04
  • 3 回答
  • 0 关注
  • 1560 浏览
慕课专栏
更多

添加回答

举报

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