首頁 >後端開發 >php教程 >1天 等於 86400 秒?

1天 等於 86400 秒?

WBOY
WBOY原創
2016-07-30 13:30:153300瀏覽

寫程式碼中常常會用到日期運算。在大多數的時候,為了方便,很有可能會簡簡單單的對一個時間戳進行加減法運算:

$time = mktime(0, 0, 0, 8, 28, 2015);
$one_hour_later = date('Y-m-d H:i:s', $time + 3600);

這是一條簡單的獲取一小時後時間戳的代碼,但如果放大到天以上的單位時,這個時間戳真的是你想要的嗎?

比如,你有了某一天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