datetime.fromtimestamp() - 返回我的本地时区而不是 GMT
Posted
技术标签:
【中文标题】datetime.fromtimestamp() - 返回我的本地时区而不是 GMT【英文标题】:datetime.fromtimestamp() - returns my local timezone instead of GMT 【发布时间】:2019-12-29 23:24:34 【问题描述】:我在将 timestamp
转换为 GMT
时遇到问题。据我所知,timestamp
总是在GMT
时间,所以我希望datetime.fromtimestamp
返回GMT
或时区感知日期时间,但它返回我的本地(布拉迪斯拉发/布拉格)日期时间。
import datetime
datetime.datetime.fromtimestamp(1566720000)
datetime.datetime(2019, 8, 25, 10, 0)
但是根据Epoch Converter是
格林威治标准时间:2019 年 8 月 25 日星期日上午 8:00:00
编辑:datetime.datetime.fromtimestamp(1566720000).tzinfo
不返回任何内容,因此它不知道 tz。
你知道问题出在哪里吗?
【问题讨论】:
【参考方案1】:fromtimestamp() 返回本地日期和时间。如果需要 tz-aware,则必须指定参数 tz:
https://docs.python.org/3/library/datetime.html#datetime.datetime.fromtimestamp
返回POSIX时间戳对应的本地日期时间, 例如由 time.time() 返回。如果可选参数 tz 为 None 或 未指定,时间戳转换为平台的本地日期 和时间,返回的 datetime 对象是幼稚的。
如果您需要 UTC 日期时间对象,请改用 utcfromtimestamp:
datetime.utcfromtimestamp(timestamp)
【讨论】:
【参考方案2】:看起来你想要utcfromtimestamp
>>> datetime.datetime.utcfromtimestamp(1566720000)
datetime.datetime(2019, 8, 25, 8, 0)
请记住,这仍然会返回一个简单的日期时间对象
【讨论】:
如果你想避免因为天真的日期而减少,我解决了这个问题: datetime.fromtimestamp((datetime.now(timezone.utc).timestamp() + next_level_info['upgrade_time']), timezone.utc)以上是关于datetime.fromtimestamp() - 返回我的本地时区而不是 GMT的主要内容,如果未能解决你的问题,请参考以下文章
Python 中的 datetime.fromtimestamp(os.path.getctime()) 是不是给了我一个时区感知值?