2038 문제는 시간대에 따라 다르게 동작합니다.

2038 문제는 시간대에 따라 다르게 동작합니다.

저는 32비트 Linux에서 작업 중이며 2038 문제를 이해합니다. https://en.wikipedia.org/wiki/Year_2038_problem

어쨌든 date 명령을 사용하여 2038년 1월 19일 03:14:07 UTC 이후의 시간을 설정하려고 할 때 시스템 시간대가 UTC로 설정되면 예상대로 작동하고 time_t는 2038년 1월 19일에만 만료됩니다. UTC 03:14:07 이후.

그런데 시간대를 JST-9로 설정하면 2038년 1월 19일로 설정했는데도 이상한 결과가 나옵니다.

아래 콘솔 출력을 참조하세요.

root@X:/# date -s "2038-01-11 03:14:00"
Mon Jan 11 03:14:00 JST 2038
root@X:/# date -s "2038-01-12 03:14:00"
Tue Jan 12 03:14:00 JST 2038
root@X:/# date -s "2038-01-13 03:14:00"
Tue Jan 12 09:14:00 JST 2038
root@X:/# date -s "2038-01-14 03:14:00"
Wed Jan 13 09:14:00 JST 2038
root@X:/# date -s "2038-01-15 03:14:00"
Thu Jan 14 09:14:00 JST 2038
root@X:/# date -s "2038-01-17 03:14:00"
Sat Jan 16 09:14:00 JST 2038

2038-01-12 03:14:00 및 그 이후까지만 시간을 올바르게 설정할 수 있다는 것을 보면, 즉 2038-01-13 03:14:00부터 JST 시간은 항상 18시간 더 빠르게 설정됩니다.

root@:/# date -s "2038-01-13 03:14:00"
Tue Jan 12 09:14:00 JST 2038

왜 이런가요? 어떤 아이디어라도 있나요? 어쨌든 저는 32비트 임베디드 보드에서 커널 3.18.36을 실행하고 있습니다.

관련 정보