在Python中,使用strptime的时间戳应该使用什么格式的代码



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

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位小数秒外,时间戳的格式基本上符合ISO 8601。

  • 第7位是十分之一微秒;通常情况下,你会有3、6或9位数的分辨率(分别为毫、微米或纳秒(
  • Z表示UTC

在Python中,您可以方便地解析这种格式,如我在这里所示。

.后面的7位数字看起来是纳秒数。您可能有一个特定于平台的格式(由strftime(3)定义(可用于代替%f,但如果没有,最好在尝试将剩余字符串解析为时间戳之前去掉尾部数字。

regex = "(d{4}-d{2}-d{2}Td{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')

最新更新