ini_set('date.timezone', 'Europe/Berlin');
$t = 1382824800; // 2013-10-27 00:00:00
echo date('Y-m-d H:i:s', $t); // 2013-10-27 00:00:00
echo date('Y-m-d H:i:s', $t + 86400); // 2013-10-27 23:00:00 (少 1 小時!)
歐洲夏令時間於 10 月最後週日結束,時鐘撥回 1 小時,導致單純加 86400 秒(24小時)落在同一天 23:00。
date() 依據時區規則轉換時間戳。夏令時間切換日實際長度不等於 86400 秒。
DateTime 物件:(new DateTime('@'.$t))->modify('+1 day')->format('Y-m-d H:i:s')strtotime('+1 day', $t) 讓系統處理日曆邏輯。所有使用「時間戳 + 固定秒數」計算日期的舊代碼,若專案部署於實行夏令時地區(非台灣/中國),皆潛藏此 Bug。