오류 메시지 "날짜 : 유효하지 않은 날짜 '2016-10-16'"


35

오늘 내 시계는 자동으로 서머 타임으로 조정되었으며 crontab의 스크립트가 실패하기 시작했습니다. 무슨 일이 있었는지 살펴보고 다음과 같은 오류가 표시되었습니다 LC_ALL=C.

날짜 : 유효하지 않은 날짜 '2016-10-16'

시스템을 재부팅하는 것이 가장 좋지만 이제는 재부팅했지만 오류가 계속 나타납니다.

$ date -d '2016-10-15'
Sat Oct 15 00:00:00 BRT 2016
$ date -d '2016-10-16'
date: data inválida “2016-10-16”
$ date -d '2016-10-17'
Mon Oct 17 00:00:00 BRST 2016

무엇이 원인 일 수 있습니까?


어떤 OS에서이 명령을 실행하고 있습니까? 데비안 8에서는 재생할 수 없습니다 . 두 가지로 시도했습니다 locale: sv_SE.utf8en_us.utf-8.
maulinglawns

2
브라질은 하루 중 어느 시간 (밤)에 시계를 여름 시간으로 전달합니까?
techraf

나는 아침에 2와 같이 늦은 시간에 이동하는 모든 국가에서 문제를 일으킬 가능성이 적습니다.
njzk2

답변:


57

문제는 2016 년 10 월 16 일 시간대에서 일광 절약 시간 제가 1 시간 변경 및 전달되었다는 것입니다.

$ zdump -v America/Sao_Paulo | awk '/Oct 16/ && /2016/'
America/Sao_Paulo  Sun Oct 16 02:59:59 2016 UTC = Sat Oct 15 23:59:59 2016 BRT isdst=0
America/Sao_Paulo  Sun Oct 16 03:00:00 2016 UTC = Sun Oct 16 01:00:00 2016 BRST isdst=1

사이의 시간 그래서 00:0000:59당일은 (그러나 다른 사람 어쩌면 유효) 시간대에 유효하지 않은 것으로 간주된다 :

$ TZ=America/Sao_Paulo gdate -d '2016-10-16 0:59'
gdate: invalid date ‘2016-10-16 0:59’

$ TZ=Asia/Ho_Chi_Minh gdate -d '2016-10-16 0:59'
Sun Oct 16 00:59:00 ICT 2016

해당 범위에없는 추가 시간을 설정할 수 있습니다.

$ TZ=America/Sao_Paulo gdate -d '2016-10-16 1:00'
Sun Oct 16 01:00:00 BRST 2016

위의 GNU 날짜 동작입니다.

BSD 날짜에는이 문제가 없습니다. 시간대에서 입력 날짜가 유효하지 않으면 유효한 시간에 도달 할 때까지 1 시간 씩 자동 조정됩니다.

$ TZ=America/Sao_Paulo date -j -f '%Y%m%d%H%M' 201610160000
Sun Oct 16 01:00:53 BRST 2016

1 시간 53 초?!
domen

그래서 미래까지 너무 53 초나 시간을 조정 했습니까? 아니면 내가 잘못 이해 했습니까?
domen

1
아, 이해가 되네; 지정되지 않은 데이터를 지 웁니다 (삭제와 반대). 이 경우 00:59:07까지 조정하면 충분할 것입니다.
domen

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.