/

PHP でISO8601で日付を使用したいとき

PHP でISO8601で日付を使用したいとき

PHPでISO8601で日付を使用したい場合にはやや注意が必要です。

なぜならPHPでISO8601を指定した場合に表示されるのはISO8601型になっていないからです。

そこで今回はPHPでISO8601の形で取得する方法を紹介します。

ISO8601形式とPHPのISO8601形式

ISO8601の拡張表示(タイムゾーン入り)の場合は以下の形式で表されます。

YYYY-MM-DDThh:mm:ss+09:00

これに対してPHPのISO8601を指定した場合の表示のされ方は以下のようになります。

2020-11-09T08:00:00+0900

上記二つを比べるとタイムゾーンの表記部分が異なることがわかると思います。

そのため、APIなどで日付を使用する場合PHPのISO8601を指定しては望む結果が得られません。

そのため異なる指定をする必要があります。

PHPでISO8601型にする

PHPでISO8601型で表示をするためにはATOM型を指定します。

フォーマットで「DATE_ATOM」のように指定します。

ATOM型では以下のように表示されます。

2020-11-09T08:00:00+09:00

ISO8601と同一の形式で出力できています。

タイムゾーンが不要な場合は直接フォーマットの指定をしましょう。

以下の形で動作すると思います。

date( 'Y-m-dTH:i:s' );