[英]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
] 依賴於平台 Cmktime()
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.