Date
檢索夏令時更改的第一個小時 - GNU 日期
上週末,西歐大部分地區向後移動了一個小時——有兩次
2017-10-29T02:00
.要將時間轉換為 UTC,我可以使用 GNU 日期:
$ date -d 'TZ="Europe/Rome" 2017-10-29 02:00' Sun Oct 29 01:00:00 UTC 2017
這將返回 CET 中的時間(即第二個凌晨 2 點)。我如何
date
返回Sun Oct 29 00:00:00 UTC 2017
(凌晨 2 點 - CEST)?資訊:
$ date --version date (GNU coreutils) 8.21
時間
TZ="Europe/Rome" 2017-10-29 02:00
不明確,因為這會轉換為兩個不同的 UTC 時間,00:00
並且01:00
.如何使日期返回兩者是指定確切的時區本身,例如
$ date -ud 'TZ="Europe/Rome" 02:00:00 10/29/2017 CEST' Sun Oct 29 00:00:00 UTC 2017 $ date -ud 'TZ="Europe/Rome" 02:00:00 10/29/2017 CET' Sun Oct 29 01:00:00 UTC 2017
但是,這意味著您必須在 date 命令之外計算出時區。
時區更改的參考是
zdump
:$ /usr/sbin/zdump -v -c 2017,2018 Europe/Rome Europe/Rome -9223372036854775808 = NULL Europe/Rome -9223372036854689408 = NULL Europe/Rome Sun Mar 26 00:59:59 2017 UTC = Sun Mar 26 01:59:59 2017 CET isdst=0 Europe/Rome Sun Mar 26 01:00:00 2017 UTC = Sun Mar 26 03:00:00 2017 CEST isdst=1 Europe/Rome Sun Oct 29 00:59:59 2017 UTC = Sun Oct 29 02:59:59 2017 CEST isdst=1 Europe/Rome Sun Oct 29 01:00:00 2017 UTC = Sun Oct 29 02:00:00 2017 CET isdst=0 Europe/Rome 9223372036854689407 = NULL Europe/Rome 9223372036854775807 = NULL