아래에서 볼 수 있는 내용으로 인해 날짜 계산에서 가장 이상한 일이 발생합니다. 10월 31일에 한 달을 더하면 12월이 됩니다! 이럴 리가 없지? Ubuntu 16 및 20에도 동일한 문제가 있습니다. 이 문제로 인해 쉘 스크립트가 잘못된 날짜를 제공하게 되므로 cron 스케줄러만이 아닙니다.
root@ubuntugc:/home/miuser# date -d "20210930+1 month" +%Y-%m-%d
2021-10-30
root@ubuntugc:/home/miuser# date -d "20211030+1 month" +%Y-%m-%d
2021-11-30
root@ubuntugc:/home/miuser# date -d "20211031+1 month" +%Y-%m-%d
2021-12-01
답변1
이것이 date
작동하는 방식입니다. 추가하면 1 month
월 단위로 증가합니다. 귀하의 경우 2021-11-31
존재하지 않는 날짜이므로 결과가 유효한 날짜( 2021-12-01
)로 하루 앞으로 이동합니다. 에서coreutils 문서:
단위의 퍼지로 인해 관련 항목에 문제가 발생할 수 있습니다. 예를 들어 '2020-07-31 -1 월'은 2020-07-01로 평가될 수 있습니다. 2020-06-31은 유효하지 않은 날짜이기 때문입니다. 이전 달을 보다 확실하게 확인하려면 이번 달 15일 이전 달을 요청하면 됩니다. 예를 들어: