을 사용하여 이전 날짜를 찾으려고 합니다 TZ="GMT+NoOfHours" date
. 놀랍게도 NoOfHours >= 0 ~ NoOfHours <= 167(1-7일 전 날짜 반환)은 예상대로 작동합니다. 그러나 NoOfHours가 167보다 크면 현재 날짜를 반환합니다. 다른 가능한 해결책보다는 이 동작의 이유를 알고 싶습니다.
현재 날짜
-bash-5.0$ TZ="GMT" date
Thu Mar 4 14:59:42 GMT 2021
시간 = 144(24*6)
-bash-5.0$ TZ="GMT+144" date
Fri Feb 26 14:59:47 GMT 2021
근무시간 = 168(24*7)
-bash-5.0$ TZ="GMT+168" date
Thu Mar 4 14:59:50 GMT 2021
그리고 이것은 나를 혼란스럽게 합니다!
-bash-5.0$ TZ="GMT+167" date
Thu Feb 25 15:59:54 GMT 2021
답변1
변수 TZ
가 정의되었습니다POSIX 하에서범위 -24 ~ +24:
시간은 0에서 24 사이여야 하며, 분(및 초)(있는 경우)은 0에서 59 사이여야 합니다. 이 범위 밖의 값을 사용한 결과는 지정되지 않습니다. 앞에 '-'가 있으면 시간대는 본초 자오선의 동쪽이어야 합니다. 그렇지 않으면 서쪽이어야 합니다(선택 사항으로 앞에 '+'가 표시될 수 있음).
GNU와 다른 사람들은이 범위를 확장했습니다±167시간까지:
시간 필드의 시간 부분은 -167에서 167까지 가능합니다. 이는 POSIX.1의 확장으로 0에서 24까지만 허용됩니다.
Solaris 11.4는 그 측면에서 POSIX를 엄격하게 준수하는 것으로 보입니다.문서, 그러나 GNU 구현과 유사합니다(또는 date
테스트에서 GNU 변형을 사용할 수도 있습니다).