为什么时区不知道和时区不同的时区知道日期时间对象会产生相同的unix时间戳?

问题描述 投票:0回答:1

因此,据我所知,如果您在没有时区的情况下将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,因此它也应有所不同,但是相同。

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

python datetime timezone unix-timestamp utc
1个回答
0
投票

而且我已经找到了答案:

不知道时区的日期时间对象被解释为本地时间,而不是UTC,而Europe / Berlin是我的本地时区,因此它们是相同的。

例如欧洲/莫斯科时区产生不同的时间戳。


0
投票

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

假定简单的datetime实例代表本地时间,[timestamp]依赖平台C mktime()函数来执行转换。

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

因此,如果您在欧洲/柏林,则转换为时间戳时,纯朴的datetime和本地化为Europe / Berlin的datetime的解释方式相同。尝试本地化到其他时区,这意味着2020, 4, 1, 0, 0, 0 actually指的是不同的时间,并且您还将看到不同的时间戳。

© www.soinside.com 2019 - 2024. All rights reserved.