私は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を実行しています。