私は小枝とUnixのタイムスタンプに変換する私のMySQLデータベースからのDateTimeています。TIMESTAMPとして小枝で2016-06-22 00:00:00
間違ったタイムスタンプ/タイムゾーン変換
::DBで
をdbEntry.start|date('U')
== >1466546400
日として小枝で
dbEntry.start|date('Y-m-d H:i)
==>2016-06-22 00:00
ここでタイムスタンプをダブルチェックするhttp://www.gaijin.at/olsutc.phpは、タイムスタンプは現地時間であると言います。
私はこの問題が発生した私のバックエンドにAjaxCall経由でこのタイムスタンプを送信します
すべての私php.ini
で $dateDB = \DateTime::createFromFormat('U',$date)->format('Y-m-d H:i');
dump($dateDB);
($date
1466546400
ある)
出力
2016-06-21 22:00
ファイル私はタイムゾーンをEurope/Berlin
ですが、結果のタイムスタンプは明らかにUTC
です。
$dateDB = \DateTime::createFromFormat('U',$date,new \DateTimeZone('Europe/Berlin'))->format('Y-m-d H:i');
dump($dateDB);
で手動でタイムゾーンを設定することも、2016-06-21 22:00
につながります。
php.ini
ファイルのほかに、どうやってこのファイルが検索されますか?
私は、これはここにもアドレスPHP timestamps & timezone configurationされていることがわかり側注
、私は手動で7200秒を追加することができますが、それはまだ原因DailightSavingTimeに冬で正しいでしょうか?
DBのタイムゾーンとローカルタイムゾーンが異なると思います。 –
DBの日付が正しいと仮定して、デフォルトのタイムゾーンをphp.iniのEurope/Berlinに設定するべきではありませんか? 'format'を実行すると、デフォルトのタイムゾーンが使用されます。タイムゾーンなしでDateTimeオブジェクトを作成することは正しいです。 –
私が言ったように、すべての 'php.ini'ファイル(cliとapache)にはデフォルトのタイムゾーンとして' Europe/Berlin'があります。 – PrimuS