将字符串格式的 ISO 日期转换为 Python 中的纪元

Converting string formatted ISO date to Epoch in Python

我有一个字符串格式的日期2021-12-14T12:05:51.8031499 我怎样才能得到这个的纪元值?

将日期字符串解析为日期时间对象,然后使用 utcfromtimestamp() 函数从中 return 纪元时间。

注意示例时间多了一位。 Python 日期时间中的预期微秒是 6 位数字而不是 7 位数字(例如 803149)。

from datetime import datetime, timezone
d = '2021-12-14T12:05:51.803149'

dt = datetime.strptime(d, '%Y-%m-%dT%H:%M:%S.%f')
print(dt)

# convert datetime to time-aware timezone at UTC
# so correct timestamp is returned
dt = dt.replace(tzinfo=timezone.utc)

# Return the time in seconds since the epoch 
seconds_since_epoch = dt.timestamp()
print(seconds_since_epoch)

# convert epoch back to datetime object
d2 = datetime.utcfromtimestamp(seconds_since_epoch)
print(d2)

输出:

2021-12-14 12:05:51.803149
1639483551.803149
2021-12-14 12:05:51.803149

dateutil是你的朋友,也是7位小数秒:

from dateutil.parser import isoparse

isoparse("2021-12-14T12:05:51.8031499")
Out[2]: datetime.datetime(2021, 12, 14, 12, 5, 51, 803149)

isoparse("2021-12-14T12:05:51.8031499").timestamp()
Out[3]: 1639479951.803149

注意:给定的 ISO 格式 date/time 将导致 naive datetime object,Python 将被视为 当地时间 ,即在计算 timestamp() !

的 Unix 时间之前,将计算机的本地时间设置转换为 UTC