2012-03-16 20 views
4

私はPHPマニュアルとStackOverflowも検索しましたが、実際に私の質問に対する適切な答えは見つかりませんでした。私の日付はUTCで保存されます。今私が行う場合:PHP DateTime DST

$date = new DateTime('2012-03-16 14:00:00', 'UTC'); 
$date->setTimezone('Europe/Budapest'); 

DateTime :: setTimezone()は自動的にDSTを設定しますか?だから、もし私が文字列を書式設定すると、夏の時間は15:00:00、冬は16:00:00を出力するでしょうか?または、手動でDSTを設定する必要がありますか?

関連する質問DSTの独立したUTC時間(私が保存できる)を取得したい場合は、次の作業を行いますか?

$date = new DateTime('now', 'UTC'); 
$date->format('Y-m-d H:i:s'); 

またはgmdate('Y-m-d H:i:s')を使用するとよいでしょうか?

+2

あなたが答えを持っていると確信しているので、それを試してみませんか? –

+2

DSTを使用しない国があります。異なるPHPバージョンには異なるOlsonデータベースがあります。 PHP 5.2と5.3でDateTimeに違いがあるかもしれません。メンテナンスリリースで修正されたバグがある可能性があります。私はちょうど確信したかった。 –

答えて

5

あなたの前提は正しいです。

さらに、これは自分自身の確認に10秒かかりました。

編集:

正しい構文は次のとおりです。あなたの2番目の質問については

$date = new DateTime('2012-03-16 14:00:00', new DateTimeZone('UTC')); 

。 DateTimeコンストラクタで渡されるタイムゾーンは、 'reference'タイムゾーンです。

デフォルトのタイムゾーンもUTC(date_default_timezone_set)に設定されていない限り、UTCタイムゾーンでフォーマットするには、setTimeZone(new DateTimeZone( 'UTC'))を呼び出す必要があります。

次回は、尋ねる前にちょっと試してみてください。

+0

ありがとう! 2番目の引数はDateTimeZoneオブジェクトでなければなりません。 –