程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP裡的“夏令蟲”

PHP裡的“夏令蟲”

編輯:關於PHP編程

今兒,我遇到一個大怪物 -- 夏令蟲

╮(╯▽╰)╭,學藝不精,因為他掉進大坑裡去了。坑是這樣挖的:

以前,我為了表示當前時間的“明天”、“後天”,會用到類如下面的寫法:

$date = date(time + 3600*24*N);

殊不知,這種寫法並不安全的,請看例子:


 

ini_set('date.timezone','Europe/Berlin'); 
echo date("Y-m-d H:i:s",1382824800); 
echo "<br/>"; 
echo date("Y-m-d H:i:s",1382824800 + 1*86400); 

ini_set('date.timezone','Europe/Berlin');
echo date("Y-m-d H:i:s",1382824800);
echo "<br/>";
echo date("Y-m-d H:i:s",1382824800 + 1*86400);

輸出的結果是


 

2013-10-27 00:00:00 
2013-10-27 23:00:00 

2013-10-27 00:00:00
2013-10-27 23:00:00


第二天被偷偷吃掉一個小時!

而且未來154天都會這樣,直到第155天,這一小時才會“被還回來”。

為什麼會這個樣子?通過查詢資料發現,原來是夏令時導致的問題,

不過,我國當前未實行夏令時,所以,這個問題對於“Asia/Shanghai”來說,暫時不會成為問題。

關於日期的格式化,還是推薦尋找使用更科學的計算方式。

 


以前寫的PHP代碼都有可能會因此而BUG,在這裡向以前的項目致歉了。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved