ホームページ  >  記事  >  バックエンド開発  >  1 日は 86400 秒に相当しますか?

1 日は 86400 秒に相当しますか?

WBOY
WBOYオリジナル
2016-07-30 13:30:153225ブラウズ

日付操作はコードを記述するときによく使用されます。ほとんどの場合、便宜上、単純にタイムスタンプを加算および減算することができます:

$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;
>> 2015-03-13 00:00:00

この問題は夏時間のないタイムゾーンでは存在しませんが、依然として問題です。夏時間がある人向け その時点で存在するタイムゾーンは、期待される結果に影響を与えます。

著作権声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。

上記では、1 日が 86400 秒に等しいことを紹介しました。 、関連コンテンツも含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。