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

PHP 日期時間函數完全指南:checkdate、strtotime、DateTime 類別與時區處理

     編輯:PHP 綜合知識

核心函數速查表

函數用途範例
checkdate(m,d,Y)驗證日期合法性checkdate(2,30,2005) → false
getdate([ts])取得日期時間陣列getdate() → ['year'=>2024,'mon'=>1,...]
mktime(h,i,s,m,d,Y)生成 Unix 時間戳mktime(13,15,23,6,7,2006)
date(fmt,[ts])格式化日期字串date("Y-m-d H:i:s")
strtotime(str)英文文字轉時間戳strtotime("+3 days")
strftime(fmt,[ts])本地化格式化setlocale(LC_TIME,'zh_TW'); strftime("%A")
microtime()微秒級時間(效能測量)$t=microtime(true); ... $t2-$t
gmdate/gmmktimeGMT/UTC 時間處理gmdate("Y-m-d H:i:s")
date_default_timezone_set()設定預設時區 (PHP 5.1+)date_default_timezone_set('Asia/Taipei')

實戰常用模式

1. 日期驗證與正規化

<?php
function normalizeDate($y, $m, $d) {
    if (!checkdate($m, $d, $y)) return false;
    return sprintf('%04d-%02d-%02d', $y, $m, $d);
}
?>

2. 相對時間計算

<?php
echo date('Y-m-d', strtotime('today'));       // 今天
echo date('Y-m-d', strtotime('tomorrow'));    // 明天
echo date('Y-m-d', strtotime('+3 days'));     // 3天後
echo date('Y-m-d', strtotime('first day of next month'));

3. 效能測量

<?php
$start = microtime(true);
for ($i=0; $i<100000; $i++) { $x = $i * $i; }
$end = microtime(true);
echo "Elapsed: " . ($end - $start) . " sec";

4. 時區最佳實踐

<?php
// 程式入口統一設定
date_default_timezone_set('Asia/Taipei');

// 儲存資料庫統一用 UTC
$utc = new DateTime('now', new DateTimeZone('UTC'));
$dbValue = $utc->format('Y-m-d H:i:s');

// 顯示給用戶轉換回目標時區
$userTz = new DateTimeZone('Asia/Taipei');
$local = clone $utc;
$local->setTimezone($userTz);
echo $local->format('Y-m-d H:i:s');

DateTime 類別(PHP 5.2+ 推薦)

  • 物件導向、不可變(DateTimeImmutable PHP 5.5+)
  • 支援時區轉換、差值計算(DateInterval)、格式化
  • 解決 32 位系統 2038 年問題(64 位整數時間戳)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved