PHPでDatetimeの値をISO 8601にフォーマットする
PHPでDatetimeオブジェクトをISO 8601形式の文字列に変換するには、DateTime::format()
メソッドを使用します。
以下は、例です。
$datetime = new DateTime('now');
$iso8601_datetime = $datetime->format('Y-m-d\TH:i:sP');
echo $iso8601_datetime;
上記のコードでは、現在の日時を示すDateTime
オブジェクトを作成し、format()
メソッドを使用して、ISO 8601形式の文字列に変換しています。format()
メソッドに渡すフォーマット文字列には、ISO 8601形式の要素が含まれています。
ISO 8601形式の要素については、以下のようになります。
また、DateTime
オブジェクトのタイムゾーンを変更する場合は、DateTime::setTimezone()
メソッドを使用します。
$datetime = new DateTime('now');
$iso8601_datetime = $datetime->format('Y-m-d\TH:i:sP');
echo $iso8601_datetime;
上記の例では、Asia/Tokyo
タイムゾーンで現在の日時を示すDateTime
オブジェクトを作成し、setTimezone()
メソッドを使用してUTCタイムゾーンに変更しています。そして、format()
メソッドを使用して、変換後のISO 8601形式の文字列を取得しています。注意してほしいのは、UTCの場合はタイムゾーンオフセットを示す+hh:mm
形式の代わりにZ
を使います。