4


0

異なるサーバが異なるタイムスタンプとしてunixタイムスタンプを翻訳するべきですか?

クライアントのUIの更新に取り組んでいる間、私はすべての記事に関連付けられている日付が1日遅れであることに気付きました。 私は自分の変更中に何か問題が発生したと思っていましたが、確かに、私にいくつかの奇妙な結果を与えた小さなphpテストファイルをまとめました。 テストファイルはちょうどです。


ローカルホストで上記のコードを実行すると、次のようになります。

_ unix:1246053600、変換済み:26/06/2009 _

しかし、本番サーバーでそれを実行すると、次のようになります。

_ UNIX:1246053600、変換:27/06/2009 _

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

3 Answer


4


サーバーは2つの異なるタイムゾーンに設定されており、タイムスタンプを1970年1月1日午前0時からの秒数として解釈しています。 日付は1日ではなく、1日の一部に過ぎず、真夜中の境界を越えることができます。


4


問題はあなたが提供している$ date値がUTCであると推定されるということです。 http://www.php.net/manual/en/function.gmdate.php[use gmdateを実行すると、両方のサーバーで同じ結果が得られます。 それ以外の場合、表示される日時はサ​​ーバーのタイムゾーンに従って調整されます。 O(大文字)コードを使用してタイムゾーンを印刷し、各サーバーの現在の設定を明確にすることができます。

+ echo 'unix:'、$ date、 '、変換済み:'、date( 'd / m / Y O'、$ date); +


1


私は以前に同様の問題を抱えていました。 私の開発マシンのphp.iniのタイムゾーンが本番サーバーと異なることがわかりました。

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