取不到當前正確日期問題
頁面代碼:伺服器在美國
date_default_timezone_set('PRC'); //這裡設定了時區
$now_day = date('l');
$now_date = date("Y/m/d");
echo "now_day =".$now_day."
";
echo "now_date =".$now_date."
";
echo time();
echo "
";
echo date_default_timezone_get();
echo "
";
?>
但取到的結果為:
now_day =Thursday
now_date =2014/03/06
1394116011
PRC
總是少一天。以前沒有這種情況的,要怎麼搞啊。
------解決方案--------------------
聲明一下:沒有國外的伺服器,無法實地測試
但原理是不變的
假定伺服器的時間是準確的
則有
$t = 1394116011; //time() 的結果
for($i=-12; $i<=12; $i++) {
date_default_timezone_set(sprintf("Etc/GMT%s%d", $i<0?'':'+', $i));
echo date_default_timezone_get(), date(' Y-m-d H:i:s', $t), PHP_EOL;
}
Etc/GMT-12 2014-03-07 02:26:51
Etc/GMT-11 2014-03-07 01:26:51
Etc/GMT-10 2014-03-07 00:26:51
Etc/GMT-9 2014-03-06 23:26:51
Etc/GMT-8 2014-03-06 22:26:51
Etc/GMT-7 2014-03-06 21:26:51
Etc/GMT-6 2014-03-06 20:26:51
Etc/GMT-5 2014-03-06 19:26:51
Etc/GMT-4 2014-03-06 18:26:51
Etc/GMT-3 2014-03-06 17:26:51
Etc/GMT-2 2014-03-06 16:26:51
Etc/GMT-1 2014-03-06 15:26:51
Etc/GMT+0 2014-03-06 14:26:51
Etc/GMT+1 2014-03-06 13:26:51
Etc/GMT+2 2014-03-06 12:26:51
Etc/GMT+3 2014-03-06 11:26:51
Etc/GMT+4 2014-03-06 10:26:51
Etc/GMT+5 2014-03-06 09:26:51
Etc/GMT+6 2014-03-06 08:26:51
Etc/GMT+7 2014-03-06 07:26:51
Etc/GMT+8 2014-03-06 06:26:51
Etc/GMT+9 2014-03-06 05:26:51
Etc/GMT+10 2014-03-06 04:26:51
Etc/GMT+11 2014-03-06 03:26:51
Etc/GMT+12 2014-03-06 02:26:51
可以看到,除非你把時區設在太平洋上,2014-03-06 這個日期都不會變
於是可以推論,你的伺服器上的時間不準確
這一點你可以在按伺服器預設時區輸出一個日期時間後,手工推演一下