首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 日期時間操作實用技巧總結 (格式化、計算、時區)

     編輯:PHP 綜合知識

1. 統一日期格式 (補零)

表單傳來的 `2015-9-9` 轉為標準 `2015-09-09`,利於資料庫查詢與排序。

$y = '2015'; $m = '9'; $d = '9';
if (!checkdate($m, $d, $y)) exit('日期無效');
$ts = mktime(0,0,0, $m, $d, $y); // 交給 PHP 自動補零
$std = date('Y-m-d', $ts); // 2015-09-09

2. 取得「昨天」的起始/結束時間戳

避免手動減 1 導致月份/年份跨界錯誤。

date_default_timezone_set('Asia/Shanghai');
$yesterdayTs = strtotime('-1 day'); // 自動處理跨月/跨年
$y = date('Y', $yesterdayTs);
$m = date('m', $yesterdayTs);
$d = date('d', $yesterdayTs);

$dayStart = mktime(0,0,0, $m, $d, $y);       // 00:00:00
$dayEnd   = mktime(23,59,59, $m, $d, $y);   // 23:59:59

// 驗證
echo ($dayEnd - $dayStart) / 3600; // 24

3. 相對時間字串 `strtotime` 進階用法

strtotime('+1 week');       // 一週後
strtotime('first day of next month'); // 下月 1 號
strtotime('last Friday');   // 上週五
strtotime('2023-12-25 +3 days'); // 指定基準日運算

4. `DateTime` 物件導向風格 (PHP 5.3+ 推薦)

$dt = new DateTime('now', new DateTimeZone('Asia/Shanghai'));
$dt->modify('+1 month')->setTime(0,0,0); // 下月 1 號 00:00
echo $dt->format('Y-m-d H:i:s');

// 計算差異
$d1 = new DateTime('2023-01-01');
$d2 = new DateTime('2023-12-31');
$diff = $d1->diff($d2);
echo $diff->days; // 364
echo $diff->format('%m月 %d天');

5. 常用格式化字元對照表

字元說明範例
Y4 位數年2023
m2 位數月 (補零)09
n月 (不補零)9
d2 位數日 (補零)05
H24 小時制 (補零)14
i分 (補零)05
s秒 (補零)09
w星期 (0=日)3

6. 時區處理最佳實務

  • 程式碼開頭統一 `date_default_timezone_set('Asia/Shanghai');`
  • 資料庫儲存 **UTC 時間戳** (`INT` 或 `TIMESTAMP`),顯示時再轉換使用者時區。
  • 避免在 SQL 中使用 `NOW()`,改由應用層傳入統一時間,利於測試與跨時區部署。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved