我有一个.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')