2010-11-26 6 views
0

のstrtotimeは1970-01-01(UTC)から計算されている異なるタイムゾーンを使用しており、日付は私のタイムゾーンを使用している、すなわちアメリカ/ニューヨーク 簡単な例:のPHPのstrtotime関数と日付関数は

:タイムスタンプが0である

var_dump(date('Y-m-d h:i:s', 0)); 

プリント:それは0を返すべき1969-12-31 07:00:00

、それは

var_dump(strtotime('1969-12-31 07:00:00')); 
-43200 
を返します。

今、明らかに、私は

strtotime($date . ' -5') 

すなわち日付にタイムゾーンを追加することができ、それが動作すると思います。

しかし、私はどこでもstrtotime関数を使用しています。

私は_$ENV['TZ']date_timestamp_get()で試してみました。 しかし、私はそれらを同期することはできません。

私はまた、php.iniのdate.timezoneをAmerica/New_Yorkに変更しました。

最後に、date_timestamp_set('UTC')を使用してタイムゾーンを強制すると、正常に動作し、両方の日付が同期されます。しかし、私はサーバーからのタイムゾーンが必要です。

教えてください、私はアイデア日付で

+0

ここで問題が発生しているところで少し混乱します。あなたは正確に何をしようとしていますか?すべてをUTCに設定しようとしていますか? – wajiw

答えて

2
var_dump(date('Y-m-d H:i:s', 0)); 

h!= Hの外です。それは午後7時です。あなたは1969年12月31日07:00:00 amから時間を得ようとしています。

+0

良いキャッチ。ありがとうございました。私が探していたものではありませんでしたが、私はそれを理解しました。 – hbt

+0

私の問題は、 'echo strtotime( '2010-11-05')+ 60 * 60 * 24 * 21;を使用して21日を追加しようとしていましたが、これは夏時間に対応していません11月7日)。したがって、日付が変換されたとき、2010-11-25の代わりに23:00:00に返されます。 – hbt

+0

strtotime( '2010-11-05 +21 days')はそれを – hbt