![현재까지 1시간을 추가할 수 없습니다.](https://linux55.com/image/140474/%ED%98%84%EC%9E%AC%EA%B9%8C%EC%A7%80%201%EC%8B%9C%EA%B0%84%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
내 스크립트의 date 명령에 흥미로운 문제가 있습니다. 내 스크립트는 특정 날짜 범위에 대해 시간별 데이터 로드를 생성합니다. 나는 날짜 함수를 사용하여 "시작" 날짜에 도달할 때까지 "시작" 날짜를 1시간씩 늘립니다. 날짜 방법은 잘 작동하고 예상대로 "시작" 날짜에 한 시간을 추가합니다. 그러나 2017/11/05 01:00:00에 도달하면 증가가 중지됩니다. 여러 날짜로 테스트해보진 않았지만 같은 문제가 있는 또 다른 날짜는 2016/11/06 01:00:00 입니다.
$ date -d "2017/11/05 01:00:00 1 hour" +"%Y/%m/%d %T"
2017/11/05 01:00:00
$ date -d "2016/11/06 01:00:00 1 hour" +"%Y/%m/%d %T"
2016/11/06 01:00:00
리눅스 버전 리눅스 3.10.0-229.4.2.el7.x86_64
답변1
문제의 원인은 DST(일광 절약 시간)였습니다. DST 날짜 오전 1시(11월 첫 번째 일요일)를 date 명령에 전달하면 내부적으로 날짜에 1시간을 더하고 DST에서 1시간을 뺄 수 있습니다. 해결책은 @jkan5855가 제안한 대로 -u(UTC)를 사용하는 것입니다.
$ date -d "2017/11/05 01:00:00 1 hour" +"%Y/%m/%d %T" -u
답변2
date --version
당신이 비행하는 날짜의 버전을 확인해 보세요 . 에 대한 date (GNU Coreutils) 8.30
명령
GNU Coreutils를 다시 설치하거나 업데이트하세요(Linux/하위 시스템에 적합한 패키지 찾기). 다른 누구도 이 문제를 겪지 않는 것 같습니다. 당신의 정확한 명령이 2017/11/05 02:00:00
나를 위해 인쇄해 줄 것입니다.
그래도 문제가 해결되지 않으면 컴퓨터가 일시적으로 날짜의 영향을 받나요? 더 잘 설명할 수 있는 방법은 없지만 다른 하위 시스템/터미널에서도 이 문제가 발생하므로 컴퓨터를 다시 시작해 보세요.