2016-07-04 17 views
1

今日は:ここPHPのstrtotime矛盾

//on my local or any web servers that i work on Brazil 
echo strtotime('2016-07-04'); //return 1467601200 

//on phptester.net or any other like it 
echo strtotime('2016-07-04'); //return 1467590400 

が起こっていただきましたか? これは同じではないと思われますか?

+1

phpインスタンスのデフォルト** [タイムゾーン](http://php.net/manual/en/timezones.php)** – YvesLeBorg

+0

の違いは、正確には3 x 3600秒です。あなたはどのタイムゾーンですか? – user5329483

+0

時間差が3600秒の倍数であっても、いつでもタイムゾーンの問題になります。 –

答えて

2

PHPのドキュメント(http://php.net/manual/en/function.time.php)を見てみると、php timeはUnix Epoch(1月1日1970 00:00:00 GMT)からの秒数を数えます。 1つのタイムゾーンの1日の0秒は、別のタイムゾーンの1日の0秒と異なり、異なるPHPインスタンスは異なるタイムゾーンを使用することがあります。

+0

Hm。それは私のために新しい。私はいつも同じ日付が世界のあらゆる場所で同じタイムスタンプを与えると考えました。だから、タイムスタンプが世界の別の場所に作成されると、私は一貫性のない結果を得ますか?私はいつもunixtimeの理由は誰もが同じように日付を伝えることだと思っていました。 実際には、echo strtotime( '1970-01-01');私に10800を与えてください。これは私には非常に奇妙です。 – Patric

+0

それは矛盾していない、単にあなたがより多くの情報を必要とすることを意味します。それは、ある時を人に尋ねるようなものです。 date_default_timezone_get()でphpインスタンスに問い合わせることができます。ローカルインスタンスとリモートインスタンスでこれを使用するとかなりわかりますが、あなたが見ている数値の差と正確に等しいタイムゾーンの違いを見つけるでしょう。 – Nick