因此,据我所知,如果您在没有时区的情况下从 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ïvedatetime
和datetime
本地化到 Europe/Berlin 的解释方式相同。尝试本地化到其他时区,这意味着2020, 4, 1, 0, 0, 0
实际上指的是不同的时间,您也会看到不同的时间戳。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句