重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

echo date('n/j',1257058800),":";
echo date('n/j',1257145200);
同じコードをローカルとサーバ側両方実行しました。

結果
ローカル 11/1:11/2
サーバ側 11/1:11/1

どこが問題ですか

A 回答 (3件)

ちなみに月日だけで無く、時分秒まで出した場合どうなりますか?



print date('Y/m/d H:i:s', 1257058800) . ":".date(('Y/m/d H:i:s',1257145200)."\n";

実行環境:Linux(日本時間)の場合
2009/11/01 16:00:00:2009/11/02 16:00:00

1257058800と1257145200の差は86400(24*60*60)
なので、本来であれば次の日になると思います。

16:00という微妙な時間ですので、日本時間のサーバーでは
同じ日になる事は無いと思います。

同じ日になる可能性があるとしたら
likewindさんの実行サーバーがアメリカ?(時差16時間?)のサーバーで
うるう秒で1秒プラスになってるとかそういう特殊な
事情があるのかもしれません。

あくまでも想像なので、とりあえず時分秒までの出力を見て
お考えください。

この回答への補足

ご回答いただいて、ありがとうございました。
はい、アメリカのサーバです。
print date('Y/m/d H:i:s', 1257058800) . ":".date(('Y/m/d H:i:s',1257145200)."\n";
実行結果は以下です。
2009/11/01 00:00:00:2009/11/01 23:00:00

これをみると、差は82800(23*60*60)ですね。

補足日時:2009/10/09 17:37
    • good
    • 0

ああ、アメリカですか・・・


意識したことなかったですが、DST(サマータイム)の基準日が
11月の第一日曜日ですね、ちゃんと計算してないのでなんとも
いえませんが、その関係で1時間ずれがでるはずです・・・

この回答への補足

ご回答ありがとうございました。

そうですか、まったく知りませんでした。

確かに2009年11月1日は日曜日です。アメリカのサマータイム実施日らしいです。

その関係かなぁー 

資料などを見たら、結構複雑そうですね。

補足日時:2009/10/09 18:15
    • good
    • 0

print date('Z');


してみてください。オフセット時間がずれているのでは?
GMTのズレとか

この回答への補足

print date('Z');
の実行結果

サーバ側
-25200
ローカル
32400

やっぱり違いますね。

ローカルとサーバのコードにdate_default_timezone_set('Asia/Tokyo');
を追加したら、解決できました。
ありがとうございました。

補足日時:2009/10/09 17:14
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

原因教えていただけませんか。

タイムゾーンが同じではないですが、どうして
echo date('n/j',1257058800);
echo date('n/j',1257145200);
が同じ日になりますか、1257145200-1257058800=86400=一日の差があります。

お礼日時:2009/10/09 17:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!