日期時間處理是業務開發高頻需求。本文匯總 14 個 Demo,覆蓋合法性驗證、格式化輸出、時間戳互轉、時區設置、日期計算、微秒計時等核心場景。
// checkdate(月, 日, 年) var_dump(checkdate(7, 16, 2010)); // true var_dump(checkdate(2, 30, 2010)); // false
date_default_timezone_set('Asia/Shanghai'); // 必須先設置時區
echo date('Y-m-d H:i:s'); // 2024-01-15 14:30:00
echo date('r'); // RFC 2822 格式
// 常用字符:Y(四位年) m(月) d(日) H(24時) i(分) s(秒) a(am/pm)
注意:未設置時區默認 UTC,輸出時間偏移 8 小時。
time():當前 Unix 時間戳(秒)gettimeofday():返回 ['sec'=>秒, 'usec'=>微秒, ...]getdate(時間戳?):返回關聯數組 ['year'=>..., 'month'=>..., 'weekday'=>...]date('Y-m-d H:i:s', 時間戳):時間戳 → 可讀格式$beijing2008 = mktime(8, 8, 8, 8, 8, 2008); // 時,分,秒,月,日,年
echo date('Y-m-d H:i:s', $beijing2008); // 2008-08-08 08:08:08
// 時間戳相減得秒數
$diffHours = round((mktime(0,0,0,8,16,2016) - time()) / 3600, 2);
// strtotime 解析字符串
$seconds = strtotime('2010-07-16 15:15:15') - strtotime('2010-07-16 15:14:15'); // 60
if ($seconds >= 60) echo '請休息一下';
// 獲取/設置默認時區
echo date_default_timezone_get(); // UTC
date_default_timezone_set('Asia/Shanghai');
echo date('Y-m-d H:i:s'); // 正確本地時間
// localtime 返回結構化本地時間
print_r(localtime(time(), true));
function microtime_float() {
list($usec, $sec) = explode(' ', microtime());
return $usec + $sec;
}
$start = microtime_float();
// ... 業務代碼 ...
$end = microtime_float();
echo round($end - $start, 4) . ' 秒';
echo date('Y-m-d H:i:s', getlastmod()); // 當前腳本修改時間
date_default_timezone_set('Asia/Shanghai')。DATETIME,避免時區混亂。