8

Centos 7.4 64ビットでphp(5.4)を使用して、日時情報を現地時間(gtm + 1)からUTCに変換する必要があります

次の手順を試しました:

function convertToUtc ($date)
{
  $dateTime = new DateTime ($date, new DateTimeZone('Europe/Rome'));
  $dateTime->setTimezone(new DateTimeZone('UTC'));
  return $dateTime->format('Y-m-d') . 'T' . $dateTime->format('H:i:s') . 'Z';
}

これは 2038 年まで機能し、その後は DST を誤って計算し、常に 1 時間のオフセットを返します。

2037 : すべてOK

LOCAL TIME           ->  UTC TIME

2037-03-28 10:12:13  ->  2037-03-28T09:12:13Z   the day before dst change

2037-03-29 10:12:13  ->  2037-03-29T08:12:13Z   the first DST day

2037-10-24 10:12:13  ->  2037-10-24T08:12:13Z   the last DST day

2037-10-25 10:12:13  ->  2037-10-25T09:12:13Z   the day after


2038 : ok until dst change

2038-03-27 10:12:13  ->  2038-03-27T09:12:13Z   OK

2038-03-28 10:12:13  ->  2038-03-28T09:12:13Z   error : should be 2038-03-28 08:12:13Z

2038-10-30 10:12:13  ->  2038-10-30T09:12:13Z   error : should be 2038-10-30 08:12:13Z

2038-10-31 10:12:13  ->  2038-10-31T09:12:13Z   OK

注意: 次の式が正しく機能するため、日付の算術演算は UNIX タイムスタンプ (2018 年 19 月 19 日) の制限の影響を受けないようです。

$date = new DateTime();
$date->modify('+100 year');
echo $date->format('Y-m-d');

(2118-04-23 を印刷します)

助言がありますか ?よろしくマウリツィオ

4

1 に答える 1