在Python中使用strptime时,我应该使用哪种格式的代码?

问题描述

我有一个.txt文件,其中包含字符串"2020-08-13T20:41:15.4227628Z" 我应该在Python 3.7的strptime函数中使用哪种格式的代码?我尝试了以下操作,但'8'之前的'Z'并非有效的工作日

from datetime import datetime

timestamp_str = "2020-08-13T20:41:15.4227628Z"
timestamp = datetime.strptime(timestamp_str,'%Y-%m-%dT%H:%M:%s.%f%uZ')

ValueError: time data '2020-08-13T20:41:15.4227628Z' does not match format '%Y-%m-%dT%H:%M:%s.%f%uZ'

解决方法

.之后的7位数字似乎是纳秒数。您可能有一种特定于平台的格式(由strftime(3)定义)可以代替%f使用,但如果没有,最好的选择是在尝试将其余字符串解析为之前删除掉尾随数字。时间戳。

regex = "(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}).(\d.*)"
if (m := re.match(regex,timestamp_str) is not None:
    timestamp_str = "".join(m.groups())

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

除了7位数的小数秒,时间戳的格式大部分与ISO 8601一致。

  • 第7位数字是1/10微秒;通常您的分辨率为3、6或9位(分别为毫秒,微秒或纳秒)。
  • Z 表示UTC

在Python中,您可以方便地as I show here解析此格式。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...