[英]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.