http://www.php.net/manual/en/function.date.phpによると
オプションのタイムスタンプ パラメータは整数の Unix タイムスタンプで、タイムスタンプが指定されていない場合は現在の現地時間にデフォルト設定されます。つまり、デフォルトで time() の値になります。
ただし、 time() の定義では、タイムゾーンに依存するという言及はありません。どちらが正しいですか?
http://www.php.net/manual/en/function.date.phpによると
オプションのタイムスタンプ パラメータは整数の Unix タイムスタンプで、タイムスタンプが指定されていない場合は現在の現地時間にデフォルト設定されます。つまり、デフォルトで time() の値になります。
ただし、 time() の定義では、タイムゾーンに依存するという言及はありません。どちらが正しいですか?
time() は、1970 年 1 月 1 日 00:00 GMT からの秒数を返します。
UNIX エポックからの経過秒数は、どのタイムゾーンにいても同じです。
いいえ、によって返される値time()
はタイムゾーンに依存しません。
date_default_timezone_set("UTC");
echo "UTC:".time();
echo "<br>";
date_default_timezone_set("Europe/Helsinki");
echo "Europe/Helsinki:".time();
echo "<br>";
どちらも同じ値を出力します。
編集に関して、の戻り値はtime()
、マシンの現在の時刻によって異なります。マシンの現在の時刻は、通常、タイムゾーンと日付+時刻を指定することによって設定されます。
によって返される値がタイムゾーンに依存しないと言うときtime()
、任意の時点で、地球上のすべての場所でのUTC時間の正しい値が同じであることを意味します。
日本のある人が(タイムゾーンとともに)システム時刻を正しく設定し、インドの別の人が同じことを行うと仮定します。いつでも、それらがtime()
同時に呼び出す場合、それらは同じ値を取得します。
ドキュメントは少し曖昧だと思います。つまり、「実行中のマシンの」のように「ローカル」を意味します。またはdate
、設定されたタイムゾーンに従ってタイムスタンプをフォーマットするため、によって返される値はdate
「ローカル」時間になることを意味するようにすることもできます。
つまり、「ローカル」はここでは実際には何も意味しません。
私は問題を知っていると思います。
time() それ自体はタイムゾーンに依存しません。
でも、
date() はタイムゾーンに依存します。データのフォーマット方法は、date_default_timezone_set によって異なります
したがって、アサドの答えに従って
date_default_timezone_set("UTC");
echo "UTC:".date(...);
echo "<br>";
date_default_timezone_set("Europe/Helsinki");
echo "Europe/Helsinki:".date(...);
echo "<br>";
異なる価値を生み出します。どちらも時間を使う