为什么具有不同时区的时区未知和时区感知日期时间对象产生相同的 unix 时间戳?

克里斯

因此,据我所知,如果您在没有时区的情况下从 unix 时间戳转换为 unix 时间戳,您将始终获得 GMT/UTC,如下所示:

import datetime
import pytz
datetime.datetime(2020,4,1,0,0,0).timestamp()

结果时间戳为1585692000.

现在,如果我这样做:

(pytz.timezone("Europe/Berlin").localize(datetime.datetime(2020,4,1,0,0,0))).timestamp()

它产生相同的unix-timestamp。

如果我输入一个日期时间并告诉程序该日期时间具有 GMT+1 时区,那么它的 UTC 值应该偏移 1 小时,并且由于 unix 时间戳始终是 UTC,所以它也应该不同,但它是相同的。

为什么?我的哪个假设是错误的?

UNIX 时间戳没有时区,它们总是表示自 1970 年 1 月 1 日 00:00 UTC 以来经过的秒数。该数字在全球范围内是相同的,它不会随您的时区而变化。

datetime假设Naive实例表示本地时间,并且 [ timestamp] 依赖于平台 Cmktime()函数来执行转换。

https://docs.python.org/3/library/datetime.html#datetime.datetime.timestamp

因此,如果您在 Europe/Berlin,那么当转换为时间戳时,naïvedatetimedatetime本地化到 Europe/Berlin 的解释方式相同。尝试本地化到其他时区,这意味着2020, 4, 1, 0, 0, 0 实际上指的是不同的时间,您也会看到不同的时间戳。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章