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

PHP 日期時間操作大全:格式化、驗證、時間戳轉換、時區、性能計算

     編輯:PHP 綜合知識

前言

日期時間處理是業務開發高頻需求。本文匯總 14 個 Demo,覆蓋合法性驗證、格式化輸出、時間戳互轉、時區設置、日期計算、微秒計時等核心場景。

一、日期合法性驗證(Demo1)

// checkdate(月, 日, 年)
var_dump(checkdate(7, 16, 2010)); // true
var_dump(checkdate(2, 30, 2010)); // false

二、格式化輸出:date()(Demo2)

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 小時。

三、獲取時間戳與結構化時間(Demo3-6)

  • time():當前 Unix 時間戳(秒)
  • gettimeofday():返回 ['sec'=>秒, 'usec'=>微秒, ...]
  • getdate(時間戳?):返回關聯數組 ['year'=>..., 'month'=>..., 'weekday'=>...]
  • date('Y-m-d H:i:s', 時間戳):時間戳 → 可讀格式

四、指定日期生成時間戳(Demo7)

$beijing2008 = mktime(8, 8, 8, 8, 8, 2008); // 時,分,秒,月,日,年
echo date('Y-m-d H:i:s', $beijing2008); // 2008-08-08 08:08:08

五、日期計算與差值(Demo8-9)

// 時間戳相減得秒數
$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 '請休息一下';

六、時區處理(Demo11-13)

// 獲取/設置默認時區
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));

七、微秒級性能計時(Demo14)

function microtime_float() {
    list($usec, $sec) = explode(' ', microtime());
    return $usec + $sec;
}
$start = microtime_float();
// ... 業務代碼 ...
$end = microtime_float();
echo round($end - $start, 4) . ' 秒';

八、文件修改時間(Demo10)

echo date('Y-m-d H:i:s', getlastmod()); // 當前腳本修改時間

九、最佳實踐清單

  1. 腳本入口統一設置時區:date_default_timezone_set('Asia/Shanghai')。
  2. 數據庫存儲統一用 Unix 時間戳 (INT) 或 DATETIME,避免時區混亂。
  3. 業務邏輯優先用 DateTime 類(PHP 5.2+),支持鏈式操作、時區轉換、差值計算,比過程函數更 OO。
  4. 定時任務按UTC 時間配置,避免夏令時切換導致重複/遺漏執行。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved