私はいくつかの時間関連の機能に取り組んでおり、私はいつもUTC時間を使い、一貫性のために整数としてタイムスタンプを保存します。PHP mktimeとtimezone
しかし、mktime
を使用すると、現在設定されているタイムゾーンが戻り値mktime
の影響を受けているようです。ドキュメントから、mktime
は、エポックから秒数を返すことになっていることが分かります。
与えられた引数に対応するUnixタイムスタンプを返します。 this timestampは、 のUnixエポック(1970年1月1日00:00:00 GMT)から指定された時間までの秒数を含む長い整数です。
http://php.net/manual/en/function.mktime.php
しかし、mktime
が現在設定されているタイムゾーンを含むと思われます。次のコードを使用している場合:exacly 11時間の違いのようですどの
1451606400
1451566800
:
date_default_timezone_set('UTC');
$time = mktime(0, 0, 0, 1, 1, 2016);
echo "{$time}\n";
date_default_timezone_set('Australia/Sydney');
$time = mktime(0, 0, 0, 1, 1, 2016);
echo "{$time}\n";
を私は2つの時間が同じになるようにバレス期待するが、どうやらそうではありません
1451606400 - 1451566800 = 39600/(60*60) = 11
mktime
について正しく理解していないか、mktime
を使用するとタイムゾーンが考慮されるのはなぜですか?
これはかなりひどいです。彼らがしなければならなかったのは、常にすべての時間機能でUTCを使用し、時間を「表示」する場合にのみタイムゾーンを組み込むことでした。私はそれがPHPの "歴史"のためにあると思います...あなたの答えをありがとう! – Luke