ど素人から毛を生やす。<延>

UTC->JST 日時変換(TとかZとかついてる日時のやつ)

Web > PHP 2022年3月31日(最終更新:7日前)

2022年3月31日に作成されたページです。
情報が古かったり、僕が今以上のど素人だった頃の記事だったりする可能性があります。

どもです。
外部と通信した際、こんな感じの日時データが送られてきました。

2022-03-31T06:30:21.080Z

これはISO8601という日時のフォーマットによるものです。
Tより前が年月日、後が時分秒を指し、
末尾にZが付く場合はUTCを、+09:00など時間が付く場合はUTC以外の時間の規格を指すとのこと。

UTCとは、協定世界時(Coordinated Universal Time)のことです。
グリニッジ標準時(GMT)は聞き覚えがありましたが、最近は別の測り方になっているんですね。

で、UTCに対して日本で用いられる時間が日本標準時(JST)です。
先の例なら

2022-03-31T15:30:21+09:00

こうなります。日本国内で使用する場合は「2022-03-31 15:30:21」だけが欲しいところ。
というわけで、変換用の関数を適当なところに置いておくという旨の備忘録です。

static function convertDateTimeJST($datetime){
	$t = new DateTime($datetime);
	$t->setTimeZone(new DateTimeZone('Asia/Tokyo'));
	return $t->format('Y-m-d H:i:s');
}

逆に、日本国内の時間データをUTC(ISO 8601規格)で出力する場合は、こう。

static function convertDateTimeC($datetime, $timezone = 'UTC'){
	$t = new DateTime($datetime, new DateTimeZone('Asia/Tokyo'));
	$t->setTimeZone(new DateTimeZone($timezone));
	return $t->format('c');
}

設定できるタイムゾーンの種類については、PHPマニュアルに一覧がありました。

この記事は役に立ちましたか?
  • (・∀・) 参考になった (0)
  • (`・ω・´) 役に立った (0)
  • _(:3」∠)_ 面白かった (1)