繁体   English   中英

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

[英]Why do a timezone-unaware and a timezone-aware datetime object with a different timezone yield the same unix-timestamp?

因此,据我了解,如果您在没有时区的情况下从或转换为 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,它也应该是不同的,但它是相同的。

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

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

假设原始datetime时间实例表示本地时间,并且 [ timestamp ] 依赖于平台 C mktime() function 来执行转换。

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

因此,如果您在欧洲/柏林,那么当转换为时间戳时,天真datetime时间和本地化到欧洲/柏林的datetime时间的解释方式相同。 尝试本地化到其他时区,这意味着2020, 4, 1, 0, 0, 0实际上指的是不同的时间,您也会看到不同的时间戳。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM