2038 问题在不同时区表现不同

2038 问题在不同时区表现不同

我正在 32 位 Linux 上工作,我理解 2038 问题 https://en.wikipedia.org/wiki/Year_2038_problem

无论如何,当我尝试使用 date 命令将时间设置为超过 2038 年 1 月 19 日 03:14:07 UTC 时,并且当我的系统时区设置为 UTC 时,它会按预期工作,并且 time_t 仅在 19 日 03:14:07 UTC 之后溢出2038 年 1 月。

但是,当我将时区设置为 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。

相关内容