您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

从时区和UTC时间获取该时间点的秒数与本地时间的差

从时区和UTC时间获取该时间点的秒数与本地时间的差

假设“ UTC时间以秒为单位”表示POSIX时间戳。要将其转换为斯德哥尔摩时间:

from datetime import datetime
import pytz

tz = pytz.timezone('Europe/Stockholm')

utc_dt = datetime.utcfromtimestamp(posix_timestamp).replace(tzinfo=pytz.utc)
dt = tz.normalize(utc_dt.astimezone(tz))
print(dt.strftime('%Y-%m-%d %H:%M:%s %Z%z'))

tz.normalize() 如果源时区为UTC(在这种情况下),则不必要。

一个更简单的替代方法是使用fromtimestamp()tz参数,将“自纪元以来的秒数”转换为本地时间:

from datetime import datetime
import pytz

tz = pytz.timezone('Europe/Stockholm')

dt = datetime.fromtimestamp(posix_timestamp, tz)
print(dt.strftime('%Y-%m-%d %H:%M:%s %Z%z'))

两个示例产生相同的结果。

如果本地计算机使用“正确的”时区,然后将从外部源接收的POSIX时间戳转换为UTC,则可以使用显式公式:

from datetime import datetime, timedelta
import pytz

utc_dt = datetime(1970, 1, 1, tzinfo=pytz.utc) + timedelta(seconds=posix_timestamp)

最新的公式还可能支持更大的日期范围(1970年之前,2038年或3000年之后的日期不太可能出现问题)。

如果时间戳来自本地“正确”来源,则应该使用前两个示例(它们称为“正确” time.gmtime())。

其他 2022/1/1 18:30:58 有624人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶