2009-06-25 25 views
4

クライアントのUIアップデートを処理している間に、すべての記事に関連付けられた日付が1日に外れていたことに気付きました。私は私の変更の間に何かをねじったと思ったが、確かに、私に奇妙な結果を与えた少しのPHPテストファイルを投げつけた。テストファイルは単なるものです。別のサーバはUNIXのタイムスタンプを異なる日付に変換する必要がありますか?

<?php 
$date = 1246053600; 
echo 'unix: ',$date,', converted: ',date('d/m/Y', $date); 
?> 

私は私のローカルホスト上で上記のコードを実行した場合、私が取得:

UNIX:1246053600は、変換: 26/06/2009

をしかし、私は上でそれを実行した場合プロダクションサーバー:

unix:1246053600、変換: 01/06/2009

2つの日の間に日差があることに注意してください。ここで何が起こっているのですか?確かに、UNIXのタイムスタンプを日付に変換するのに、サーバー固有の依存関係はありませんか?

答えて

4

サーバーは2つの異なるタイムゾーンに設定されていて、1970年1月1日の真夜中からの秒数としてタイムスタンプを解釈しています。GMT。日付は1日中ではなく、深夜の境界線を越えるのに十分な1日の一部です。

+0

それは、まさにこのことが判明。プロダクションサーバのタイムゾーンの設定*だけで翌日に日付をバンプしました。 – Mathew

1

私は以前も同様の問題がありました。開発マシンのphp.iniのタイムゾーンがプロダクションサーバーと異なることがわかりました。

私はそれをチェックする価値があると思います。

4

あなたが提供している$ dateの値はUTCであると推定されます。両方のサーバーでuse gmdate, you will get the same resultの場合それ以外の場合は、表示された日付と時刻がサーバーのタイムゾーンに従って調整されます。あなたは明確な各サーバー上で現在の設定を行うために、タイムゾーンをプリントアウトするO(資本オハイオ州)のコードを使用することができます。

echo 'unix: ',$date,', converted: ',date('d/m/Y O', $date);

+0

gmdate()へのイントロの+1。とても便利な! – Mathew

関連する問題