gpt4 book ai didi

python - 正确使用 utc 时间戳和本地日期时间

转载 作者:太空宇宙 更新时间:2023-11-03 18:00:07 25 4
gpt4 key购买 nike

我使用 time.time() 跨客户端应用生成时间戳。这些时间戳被累积并批量发送到外部独立位置。

在客户端应用程序上渲染这些时间戳时,我打算使用datetime.fromtimestamp(ts_from_external_source)来创建本地datetime对象,而不定义时区,因此它默认情况下采用本地。

这是推荐的做法吗?

最佳答案

如果您仅将其用于显示时间戳,则可以使用表示本地时间的简单日期时间对象。

datetime.fromtimestamp(ts_from_external_source) 应该在 DST 转换期间工作(本地时间可能不明确,但如果我们忽略闰秒,则 POSIX 时间戳不会)。尽管如果本地时区在当时具有/将具有不同的 UTC 偏移量,并且底层 C 库不使用历史时区数据库(例如 the tz database),则对于过去/ future 的日期可能会失败。 (Linux、OS X 使用它。Windows 上的 python ——可能不会)。

datetime.fromtimestamp(ts_from_external_source) 对于大多数时区的最近日期应该没问题。

您可以使用日期为 2010-2015 年的Europe/Moscow时区进行测试(时区规则在此期间发生了变化)。

您可以使用pytz模块提供tz数据库:

from datetime import datetime, timedelta
from tzlocal import get_localzone # $ pip install tzlocal
import pytz # $ pip install pytz

tz = get_localzone() # get the local timezone as pytz timezone (with historical data)
utc_dt = datetime(1970, 1, 1, tzinfo=pytz.utc) + timedelta(seconds=ts_from_external_source)
dt = utc_dt.astimezone(tz)

或者:

dt = datetime.fromtimestamp(ts_from_external_source, tz)

运行these tests查看 datetime + timedeltafromtimestamp() 是否在您的平台上产生不同的结果。

关于python - 正确使用 utc 时间戳和本地日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com