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

PHP strtotime() 函數完全指南:從基礎到進階的時間字串解析

     編輯:PHP 相關知識

函數簡介

strtotime() 是 PHP 中最強大、最靈活的時間解析函數,能將各種格式的英文時間文字描述轉換為 Unix 時間戳(自 1970-01-01 00:00:00 UTC 起的秒數)。

基礎用法:標準格式解析

// 標準日期時間格式
echo date('Y-m-d H:i:s', strtotime('2016-01-30 18:00'));
// 輸出:2016-01-30 18:00:00

// 緊湊格式(無分隔符)
echo date('Y-m-d H:i:s', strtotime('20160130180001'));
// 輸出:2016-01-30 18:00:01

進階用法:自然語言時間描述

這是 strtotime() 最迷人的特性——支援人類自然語言:

相對時間關鍵字

// 昨天
echo date('Y-m-d H:i:s', strtotime('yesterday'));

// 上週
echo date('Y-m-d H:i:s', strtotime('last week'));

// 本週開始時間(週一 00:00:00)
echo date('Y-m-d H:i:s', strtotime('this week midnight'));

// 本月開始時間
echo date('Y-m-d H:i:s', strtotime('first day of this month midnight'));

// 相對計算:下個月這個時間
echo date('Y-m-d H:i:s', strtotime('+1 month'));

更多支援的時間描述格式

類別範例說明
相對時間+1 day, -2 weeks, +3 months支援正負號與單位組合
週期描述next Monday, last Friday下週一、上週五
月份邊界first day of, last day of月初、月末
特定時間noon, midnight, 10:30am中午、午夜、具體時間
複雜組合first Monday of next month下個月第一個週一

官方文檔參考

完整的 PHP 時間描述格式文檔請參考:

PHP 相對時間格式官方手冊

常見陷阱與最佳實踐

1. 時區問題

// 強烈建議在腳本開頭設置時區
date_default_timezone_set('Asia/Taipei');
// 或在 php.ini 中設置:date.timezone = Asia/Taipei

2. 32 位系統的 2038 年限制

如前文所述,32 位系統上 strtotime() 最大只能解析到 2038-01-19。長期項目建議使用 64 位環境或 DateTime 類。

3. 歧義格式避免

// 避免使用歧義格式
strtotime('02/03/2016'); // 美式解析為 2月3日,歐式為 3月2日

// 推薦使用 ISO 8601 格式
strtotime('2016-03-02'); // 無歧義

4. 配合 DateTime 類使用(現代寫法)

$dt = new DateTime('next Monday');
echo $dt->format('Y-m-d'); // 更物件化、功能更強大

實戰應用場景

  • 用戶輸入的自然語言時間解析(如「下週五截止」)
  • 定時任務的動態時間計算
  • 報表系統的「本月」、「上季度」等相對範圍查詢
  • API 參數中的時間字串標準化

掌握 strtotime() 的豐富語法,能讓你的時間處理代碼更簡潔、更符合人類直覺,是 PHP 開發者必備的核心技能之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved