如何解决Python YYYY-MM-DD hh:mm:ss.fff-zz:xx 格式化日期时间问题
我遇到了一个非常奇怪的问题。我正在清理一个包含大量 ISO 格式日期时间对象的数据集。然而,他们中的很多人都在抛出错误。让我用一个例子来澄清它们:
示例 1:date_str1 = '2019-09-18T07:52:53.167-04:00
。我在上面使用了 datetime.datetime.fromisoformat(date_str1)
,效果很好。
示例 2:date_str2 = 2019-09-18T07:52:50.69-04:00
。我在它上面使用了 datetime.datetime.fromisoformat(date_str2)
但它不起作用。
示例 3:date_str2 = 2019-09-18T07:52:50.690-04:00
。我在上面使用了 datetime.datetime.fromisoformat(date_str2)
,效果很好。
显然,如果秒值小数点后有 3 位数字,则它有效。如果有任何更少它就不起作用,这很奇怪,因为它们在语法上是相同的。
任何帮助将不胜感激。提前感谢您抽出宝贵时间。
解决方法
我终于解决了。我需要为此使用 strptime()
函数。有效的代码片段是:dt.datetime.strptime(date_str2,'%Y-%m-%dT%H:%M:%S.%f%z')
。注意两点:
- 时区应该是小写的 z,而不是大写。
- 您需要通过在表示字符串中添加
%f
来考虑小数秒。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。