トップへ(mam-mam.net/)

協定世界時や太平洋標準時や中部標準時などを日本標準時に変換する

検索:

「協定世界時や太平洋標準時や中部標準時などを日本標準時に変換する」

協定世界時や太平洋標準時や中部標準時などを日本標準時に変換するには

回答

DateTimeクラスの
createFromFormat関数やsetTimeZone関数やDateTimeZoneクラスを使用すれば可能です。

ソース

<?php
/*
  GMT:Greenwich Mean Time(グリニッジ標準時)
  UTC:Universal Time, Coordinated(協定世界時)
  JST:日本標準時(GMT+09:00)、CST:中部標準時(GMT-06:00)、PST:太平洋標準時(GMT-08:00)等
*/

//例■太平洋標準時を日本標準時に変換する

//太平洋標準時の文字列を設定する 以下2つは同じ時刻
//$d=DateTime::createFromFormat("j M Y G:i:s O",'02 Dec 2018 1:03:04 -0800');
$d=DateTime::createFromFormat("j M Y G:i:s O",'02 Dec 2018 1:03:04 PST');

//UNIX時間(協定世界時UTCでの1970/1/1 0:0:0から形式的経過秒数)を表示する(1543741384)
echo $d->getTimeStamp()."\r\n";
echo "<br>";
//ISO8601で表示する(2018-12-02T01:03:04-0800)
echo $d->format(DateTime::ISO8601)."\r\n";
echo "<br>";

//タイムゾーンの一覧を取得する場合はDateTimeZone::listIdentifiers()で一覧の配列を返す
//var_dump(DateTimeZone::listIdentifiers());

//タイムゾーンを日本標準時に設定する
$d->setTimeZone(new DateTimeZone('Asia/Tokyo'));
//UNIX時間(協定世界時UTCでの1970/1/1 0:0:0から形式的経過秒数)を表示する
//タイムゾーンを変更しただけなので変化なし(1543741384)
echo $d->getTimeStamp()."\r\n";
echo "<br>";
//ISO8601で日本標準時を表示する(2018-12-02T18:03:04+0900)
echo $d->format(DateTime::ISO8601)."\r\n";
echo "<br>";

//フォーマットを指定して日本標準時を表示する
echo $d->format('Y-m-d H:i:s O');