2013-06-30 1 views
28

私はUTCは、次の形式で日付を表示および処理する必要があります。PHPでZ(Zulu)ゾーン指定子を使用するためにUTCの日付を書式設定するにはどうすればよいですか?

2013-06-28T22:15:00Z

このフォーマットはISO8601標準の一部であるとして、私は何の問題作成を持っていません上記のような文字列からのDateTimeオブジェクト。しかし、私は希望のフォーマットで私のDateTimeオブジェクトを提示するためのクリーンな方法(substrやreplaceなどの文字列操作を意味しない)を見つけることができません。サーバーとPHPの日時設定を微調整しようとしましたが、ほとんど成功しませんでした。私はいつも得る:

$date->format(DateTime::ISO8601); // gives 2013-06-28T22:15:00+00:00 

私は希望の文字列を与えるだろう任意の日付形式または構成の設定はありますか?または、私はカスタムタイムフォーマットに手動で 'Z'を追加する必要がありますか?

+1

+1は、最初にDateTimeを使用します。 – Herbert

答えて

48

いいえ、目的のフォーマットに特別な定数はありません。私は使用します:

$date->format('Y-m-d\TH:i:s\Z'); 

しかし、使用している時間はアプリケーションの解釈エラーを避けるために実際にはUTCであることを確認する必要があります。

+1

十分に公正。ありがとう! – salla

+0

これは素晴らしい答えですが、 'setTimeZone'を使用してUTCに調整することをお勧めしますか?それとも清潔な方法がありますか? –

+1

@MattJohnsonそれは依存します。タイムストリングがUTCと解釈される(ただし、文字通りオフセットを含まない)場合、サーバーはUTCとは異なるタイムゾーンを持つため、 'setTimeZone()'はタイムストリングのリテラル値を変更します。これはあなたが望むものではないかもしれません。一方、既存のタイムスタンプがサーバーの時刻に解釈され、UTC時刻に変換する必要がある場合は、 'setTimeZone()'が必要です。 – hek2mgl

関連する問題