一尘不染

如何将ISO 8601日期时间字符串转换为Python日期时间对象?

python

我正在获取格式为“ 2009-05-28T16:15:00”的日期时间字符串(我相信这是ISO 8601)。一种可能的选择似乎是使用time.strptime元组的前六个元素并将其传递到datetime构造函数中来解析字符串,例如:

datetime.datetime(*time.strptime("2007-03-04T21:08:12", "%Y-%m-%dT%H:%M:%S")[:6])

我还没有找到一种“清洁”的方法。有一个吗?


阅读 496

收藏
2020-02-14

共1个答案

一尘不染

我更喜欢使用dateutil库进行时区处理和一般的可靠日期解析。如果要获得类似ISO 8601的字符串,例如:2010-05-08T23:41:54.000Z,则使用strptime解析该字符串会很有趣,尤其是如果你不预先知道是否包含时区时,尤其如此。pyiso8601在使用过程中遇到了几个问题(请检查其跟踪器),并且几年没有更新。相比之下,dateutil一直很活跃并为我工作:

import dateutil.parser
yourdate = dateutil.parser.parse(datestring)
2020-02-14