夏時間の変更の最初の時間の検索 - GNU日付

夏時間の変更の最初の時間の検索 - GNU日付

週末の間、西ヨーロッパのほとんどの地域で2件のケースが発生し、1時間遅れました2017-10-29T02:00

時間をUTCに変換するには、GNU Dateを使用できます。

$ date -d 'TZ="Europe/Rome" 2017-10-29 02:00'
Sun Oct 29 01:00:00 UTC 2017

これにより、CET時間(つまり、2日目の午前2時)が返されます。どうやっdateて戻りますかSun Oct 29 00:00:00 UTC 2017(午前2時 - CEST)?

情報:

$ date --version
date (GNU coreutils) 8.21

答え1

タイムゾーンの変更に関する注意事項は次のとおりです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

答え2

2つの異なるUTC時間に変換されるため、時間がTZ="Europe/Rome" 2017-10-29 02:00あいまいです。00:0001: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 コマンドの外部からタイムゾーンを計算する必要があることを意味します。

関連情報