如何解析以“Z”结尾的日期时间?

新手上路,请多包涵

我有以下日期时间字符串 s

2017-10-18T04:46:53.553472514Z

我这样分析它:

 t = datetime.strptime(s, '%Y-%m-%dT%H:%M:%SZ')

如何修复ValueError:时间数据 '2017-10-18T04:46:53.553472514Z' 与格式不匹配 '%Y-%m-%dT%H:%M:%SZ'

原文由 user6611764 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 924
2 个回答

理论上,

 t = datetime.strptime(s, '%Y-%m-%dT%H:%M:%S.%fZ')

将是正确的格式字符串,因为您也有几分之一秒。但是他们需要微秒。你的可能是纳秒,因为 %f 最多只需要 6 位数字。

所以你需要做这样的事情:

 t = datetime.datetime.strptime(s.split(".")[0], '%Y-%m-%dT%H:%M:%S')
t = t + datetime.timedelta(microseconds=int(s.split(".")[1][:-1])/1000)

print (t)

这有效,但它将纳秒转换为微秒。如果这不行,那么您需要做其他事情。

原文由 Hannu 发布,翻译遵循 CC BY-SA 3.0 许可协议

我认为你应该使用 dateutil.parser 模块

In [23]: s = "2017-10-18T04:46:53.553472514Z"

In [24]: import dateutil.parser as p

In [25]: p.parse(s)
Out[25]: datetime.datetime(2017, 10, 18, 4, 46, 53, 553472, tzinfo=tzutc())

原文由 not_python 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题