因此,据我所知,如果您在没有时区的情况下将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时间戳。
如果输入日期时间并告诉程序该日期时间具有时区GMT + 1,则其UTC值应偏移1小时,并且由于unix-timestamp始终为UTC,因此它也应有所不同,但是相同。
为什么?我的哪个假设是错误的?
而且我已经找到了答案:
不知道时区的日期时间对象被解释为本地时间,而不是UTC,而Europe / Berlin是我的本地时区,因此它们是相同的。
例如欧洲/莫斯科时区产生不同的时间戳。
UNIX时间戳没有时区,它们始终表示自1970年1月1日00:00 UTC以来经过的秒数。该数字在全球范围内相同,不会随您的时区而变化。
假定简单的
datetime
实例代表本地时间,[timestamp
]依赖平台Cmktime()
函数来执行转换。https://docs.python.org/3/library/datetime.html#datetime.datetime.timestamp
因此,如果您在欧洲/柏林,则转换为时间戳时,纯朴的datetime
和本地化为Europe / Berlin的datetime
的解释方式相同。尝试本地化到其他时区,这意味着2020, 4, 1, 0, 0, 0
actually指的是不同的时间,并且您还将看到不同的时间戳。