どもです。
外部と通信した際、こんな感じの日時データが送られてきました。
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マニュアルに一覧がありました。