PHP 時間比較核心原則:統一轉為 Unix Timestamp (秒數) 再比較。善用 strtotime() 解析英文時間字串、mktime() 組裝時間、ceil() 計算天數差。
| 函式 | 用途 |
|---|---|
strtotime($time, $now?) | 英文時間字串 → Timestamp (支援相對時間如 "+1 day") |
mktime(h,m,s,mon,day,year) | 指定日期時間組裝 Timestamp (參數可從右往左省略) |
date($format, $ts) | Timestamp → 格式化字串 |
ceil($float) | 無條件進位 (計算天數必備) |
$t1 = date('Y-m-d H:i:s');
$t2 = '2010-11-29 21:07:00';
if (strtotime($t1) < strtotime($t2)) {
echo "$t1 早於 $t2";
} else {
echo "$t2 早於 $t1";
}
$now = strtotime(date('Y-m-d H:i:s'));
$target = strtotime('2011-02-03 23:59:59');
$days = ceil(($target - $now) / 86400); // 86400 = 60*60*24
echo "離過年還有 $days 天!";
next Monday、+2 weeks、first day of next month。$now 為基準時間 (預設 time()),僅對相對格式生效。false (PHP 5.1+),舊版回傳 -1,請嚴謹判斷。所有時間函式受 date.timezone (php.ini) 或 date_default_timezone_set() 影響,跨時區專案務必統一設定 UTC 存儲、顯示時再轉換。