산술을 할 때 날짜가 X-2일 대신 X-3일을 출력하는 이유는 무엇입니까?

산술을 할 때 날짜가 X-2일 대신 X-3일을 출력하는 이유는 무엇입니까?

내 스크립트 중 하나에서 특정 날짜로부터 2일 후의 날짜를 찾아야 합니다. 아래 내용을 오랫동안 문제없이 사용해왔는데, date 명령을 통해 잘못된 값으로 드릴다운하는 오류가 발생한 것은 이번이 처음입니다.

$ date -d 20140331" - 2 days" +%Y%m%d

예상 출력

20140329

실제 출력

20140328

"-2일"을 사용하면 예상되는 결과가 나오지만 왜 초를 빼는 것이 작동하지 않는지 파악하는 데 여전히 어려움을 겪고 계십니까?

UNIX 날짜 출력

노트:내 프로세스는 정오에 실행되므로 여기저기서 1초가 단축되는 등의 극단적인 경계 조건은 표시되지 않습니다.

추가 정보

$ date --version
date (GNU coreutils) 5.97
Copyright (C) 2006 Free Software Foundation, Inc.

답변1

서버가 BST 시간대에서 실행되고 있기 때문에 이 문제는 최근 어제 발생한 GMT에서 BST로의 전환과 관련이 있습니다. 일요일 오전 1시에 시계가 GMT에서 BST로 1시간 앞으로 이동했습니다(우리는 한 시간을 "잃어버렸"으므로 일요일에는 23시간만 남았습니다). "이틀 전"이라고 말하면 이를 고려하면 날짜가 정확합니다. 그러나 172800초(48시간) 뒤로 이동하면 누락된 시간이 토요일 23:00으로 돌아갑니다.

관련 정보