将字符串格式的 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
我有一个字符串格式的日期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()
!