首页 > 解决方案 > 如何使用 strtotime 将时间戳转换为 unixepoch 时间戳

问题描述

我有一个2021-10-20 15:42:40+00:00通过 S3 获得的日期时间字符串

s3_object = s3_resource.Object("testunzipping", "DataPump_10000838.zip")
lastModified = s3_object.last_modified
lastModified = str(lastModified)

我需要将其转换为 unixepochtimestamp。在阅读了另一个 SO 答案后,我正在尝试这个

import datetime
time = datetime.datetime.strtotime(lastModified)

但我收到此错误:

"type object 'datetime.datetime' has no attribute 'strtotime'"

我还能如何将 str 或 datetime 对象转换为 unixepochtimestamp?

标签: pythondatedatetimeunix-timestampstrtotime

解决方案


使用fromisoformat (Python 3.7+):

import datetime
lastModified = "2021-10-20 15:42:40+00:00"
ts = datetime.datetime.fromisoformat(lastModified).timestamp()
print(ts)
# 1634744560.0 # Unix time in seconds

使用strptime

import datetime
lastModified = "2021-10-20 15:42:40+00:00"
ts = datetime.datetime.strptime(lastModified, "%Y-%m-%d %H:%M:%S%z").timestamp()
print(ts)
# 1634744560.0 # Unix time in seconds

警告:这里的输入有一个 UTC 偏移量 (+00:00),如果解析正确,它将给出感知 datetime。那一切都好。如果不是这种情况(未指定 UTC 偏移量或时区),您将得到天真的 datetime,Python 将其视为local time。因此,如果您调用.timestamp(),它将首先转换为 UTC(因为 Unix 时间是指 UTC)。


推荐阅读