datetime.datetime.timestamp() 已在 python 3.3 中添加。它返回一个浮点数(小数为毫秒),因此您必须自己将其转换为整数。
使用示例:
from datetime import datetime
def ymdhms_to_timestamp(value: str) -> int:
dt = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
return int(dt.timestamp())
t = ymdhms_to_timestamp("2015-10-20 22:24:46")
# 1445372686
datetime.fromtimestamp(t)
# datetime.datetime(2015, 10, 20, 22, 24, 46)
另请注意,由于格式化的日期字符串不包含时区信息,如果执行代码的系统的时区不是 UTC,则生成的时间戳将不是 UTC。
(更一般地说,如果存储的日期与您的系统不在同一时区,则结果将不正确。)
但如果存储的格式化日期最初是 UTC,您可以在将其转换为时间戳之前将“原始日期时间”纠正为“时区感知日期时间”。
例子:
from datetime import datetime, timezone
def ymdhms_to_timestamp_utc(value: str) -> int:
naive_dt = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
utc_dt = naive_dt.replace(tzinfo=timezone.utc)
return int(utc_dt.timestamp())
t = ymdhms_to_timestamp_utc("2015-10-20 22:24:46")
# 1445379886
datetime.fromtimestamp(t)
# datetime.datetime(2015, 10, 21, 0, 24, 46)