私のプロジェクトでは、すべての日付を DateTime (UTC からヨーロッパ/ウィーン) に変換します。現在、2038年を超える日付があり、正しい時刻を取得できません。
コード例:
$met = new DateTimeZone('Europe/Vienna');
$utc = new DateTimeZone('UTC');
$date = new DateTime('2043-08-04 08:00:00', $utc);
$date->setTimezone($met);
echo $date->format('Y-m-d H:i:s'); // Output is: 2043-08-04 09:00:00 instead of 2043-08-04 10:00:00
2043-03-29 と 2043-10-25 の間は、「夏時間」のため、UTC から +2 時間を計算する必要があります。
2043-08-04 08:00:00 を 2037-08-04 08:00:00 に変更すると、正しい時刻が得られます。
整数 32 ビットの 2038 問題であることはわかっていますが、DateTime setTimezone 関数で整数 64 ビットを使用するにはどうすればよいですか?
ありがとう