2011-09-13 6 views
1
$today = date("Y-m-d H:i"); 
$endtime = date("2011-09-14 00:00"); 
$second = abs(time() - strtotime($endtime, strtotime($today, 0))); 

echo $second; 

が、私は将来の日から二見つけたい - 今日の日付を、しかし、結果はすべてのプラットフォームで異なる場合:php strtotime()はウィンドウmac linuxで別の結果を生成しますか?

  • マック:21343、
  • のubuntu:68172と
  • ウィンドウ: 0175.

秒を1時間:分:秒に変換した後、異なる値は約10-15時間です。誰もがstrtotimeと同様に動作する他の方法を知っていますか?システムは、異なるタイムゾーンまたはシステムクロック

答えて

3

date_default_timezone_set('Europe/London');; //I usually put it at the top of the script 

http://php.net/manual/en/function.date.php

+0

次に、PHPでタイムゾーンやシステムクロックを設定する方法はありますか? – bitokeev

+0

http://www.php.net/manual/en/function.date-default-timezone-setphp – varela

+1

@biokeev 'date_default_timezone_set' – xdazz

2

それはおそらく、それはあなたに同じ値を与えるために、あなたはすべてのスクリプトのタイムゾーンを設定することができます(変数の時間を持っている)、サーバーから時刻設定を取得していますを持っているかもしれないので

3

あなたはそれが非常に複雑になっています。 date("2011-09-14 00:00")はナンセンスですが、ちょうど"2011-09-14 00:00"は同じことをします。 strtotime($today, 0)も変わっているようです。これだけではうまく実行する必要があります。

$second = abs(time() - strtotime('2011-09-14 00:00:00')); 

あなたはタイムゾーンは、おそらくあなたの実際の問題から来たさdate_default_timezone_setを使用して、すべてのシステムで同じになるように設定を確認してください。

+0

他の問題を指摘してくれてありがとうございました – bitokeev

2

あなたのコードは複雑で奇妙なことがありますが、これは@ decezeの答えで既に指摘されていますので、もう一度やり直しません。

他にも、あなたが見ている実際の不一致の理由が示唆されているので、私はそのことにも関わらないでしょう。それは非常に遅く、日付があいまいな形式(mm/dd/yyyy対すなわちdd-mm-yyyy)であるときに予期しない結果をスローをするためのいくつかの可能性を秘めているので、私は何を言われて

は、私は常に可能な限りstrtotime()機能の使用を避けるだろうということです。入力があいまいでないような場合でも、予想される形式を知らなくても日付文字列を解析する必要があるため、入力があいまいではない場合でも、入力文字列が非常に遅いです。

PHPの最近のバージョンは、日付演算を行う場合にはるかに優れた代替方法を提供します。 DateTime classからdate_diff() functionと他の機能をチェックしてください。このクラスでは、より多くのが、使用している古いスタイルのPHPテクニックよりも日付を処理する機能が向上しています。

DateTimeクラスを最大限に活用するには、PHPの最新バージョン、つまりPHP 5.3を実行する必要があることに注意してください。しかし、PHP 5.2はもはやサポートされていないので、あなたは本当にあなたが5.3になっていることを確かめなければなりません。

希望に役立ちます。

+0

このプロジェクトを私の講義に提出する必要があり、 5.3だから私はそれを使用することはできません。 – bitokeev

+0

@bitokeev - 5.2で日付クラスを引き続き使用できます。私は 'datediff()'が5.3に追加されたと思います。しかし、5.2版でさえ、あなたが今やっているよりも優れています。 – Spudley

関連する問題