簡體   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