일광 절약 시간제 변경의 첫 시간 검색 - 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시)이 반환됩니다. 어떻게 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

두 개의 서로 다른 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 명령 외부에서 시간대를 계산해야 함을 의미합니다.

관련 정보