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' );