日付操作はコードを記述するときによく使用されます。ほとんどの場合、便宜上、単純にタイムスタンプを加算および減算することができます:
$time = mktime(0, 0, 0, 8, 28, 2015); $one_hour_later = date('Y-m-d H:i:s', $time + 3600);
これは 1 時間後のタイムスタンプを取得するための単純なコードですが、上記の単位を使用するときにその日にズームインすると、このタイムスタンプは本当に欲しいものですか?
例えば、ある日の0時のタイムスタンプがあり、5日後の0時のタイムスタンプを知りたい場合は、5*86400の後に時刻を足すだけですよね?
$time = mktime(0, 0, 0, 3, 8, 2015); $five_day_later = date('Y-m-d H:i:s', $time + 5 * 86400); echo $five_day_later;
>> 2015-03-13 00:00:00
問題ないようです。しかし、別の場所にいる誰かがそれを実行する場合はどうなるでしょうか?
// 时区设置为美国芝加哥 date_default_timezone_set('America/Chicago'); $time = mktime(0, 0, 0, 3, 8, 2015); $five_day_later = date('Y-m-d H:i:s', $time + 5 * 86400); echo $five_day_later;
>> 2015-03-13 01:00:00
なんで5日後の0時じゃないの?
もちろん、この重要な問題は夏時間にあります(夏時間の特定の原則は導入されません。百度は自分で導入できます)。
解決策: 加算と減算の代わりに strtotime 関数を使用します
// 时区设置为美国芝加哥 date_default_timezone_set('America/Chicago'); $time = mktime(0, 0, 0, 3, 8, 2015); $five_day_later = date('Y-m-d H:i:s', strtotime('+5 days', $time)); echo $five_day_later;
この問題は夏時間のないタイムゾーンでは存在しませんが、依然として問題です。夏時間がある人向け その時点で存在するタイムゾーンは、期待される結果に影響を与えます。
著作権声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。
上記では、1 日が 86400 秒に等しいことを紹介しました。 、関連コンテンツも含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。