簡體   English   中英

時區問題:`$ date -R`說`+ 0300`,但是`timezone`說`-7200`

[英]Timezone issue: `$ date -R` says `+0300`, but `timezone` says `-7200`

當我打印時區全局變量timezone ,執行$ date -R給我+0300 BUT ,它向我顯示-7200

想法發生了什么?

似乎不包含DST,時區符號不同,但是為什么呢?

timezone通過定義不知道D(aylight)S(ave)T(ime)。 時區全年都是地球上恆定的區域( 更新 :至少在Sandford Fleming發明它們的那一天,它們的命名是恆定的)。 因此,用格林威治偏移量來引用它們是很常見的,因此添加臨時DST偏移量是沒有意義的。


不同的符號歸因於日期/時間和時區的不同視點和方向。

由偏移給出的date哪里格林威治參考。

timezone被測量格林威治出發的時間


關於C系統調用: gettimeofday()提供DST信息。 更新 :對於glibc實現不是這種情況)

根據我的手冊頁, timezone設置為

格林尼治標准時間西邊幾秒鍾

我會理解,就像“在西部越多, timezone就越大”。 因此,該符號與date -R不同,並且不包含DST。

您可以使用localtime()獲得的struct tm *來檢查您的環境中是否確實存在DST。 如果字段tm_isdst > 0 ,則為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM