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

PHP 時間戳處理完全指南:儲存、查詢、轉換

     編輯:PHP 相關知識

核心函式速查

需求函式/寫法範例
取得目前 Unix Timestamptime()1700000000
日期時間 → Timestampstrtotime('2023-12-25 10:30:00')支援相對時間 strtotime('-1 day')
Timestamp → 格式化日期date('Y-m-d H:i:s', $timestamp)2023-12-25 10:30:00
當天 00:00:00 Timestampstrtotime(date('Y-m-d')) 或 mktime(0,0,0,月,日,年)適合查詢「今天」資料
當天 23:59:59 Timestampstrtotime(date('Y-m-d') . ' +1 day -1 second')

資料庫儲存建議

  • 欄位型別:INT(10) UNSIGNED 或 BIGINT(支援 2038 年後)。
  • 儲存時:INSERT ... VALUES (UNIX_TIMESTAMP()) 或 PHP 端 time()。
  • 查詢今天資料:
$today_start = strtotime(date('Y-m-d'));
$today_end = strtotime('+1 day', $today_start) - 1;
$sql = "SELECT * FROM `table` WHERE `created_at` BETWEEN $today_start AND $today_end";

常見陷阱與解決

問題原因解決
時區不一致PHP、MySQL、系統時區不同統一設定 date_default_timezone_set('Asia/Taipei')、MySQL SET time_zone = '+08:00'
2038 年問題32 位元系統 Timestamp 上限使用 64 位元 PHP、MySQL BIGINT、DateTime 物件
字串轉換失敗格式不被 strtotime 識別統一用 ISO 8601 (Y-m-d H:i:s),或用 DateTime::createFromFormat

現代化寫法:DateTime 類別

$dt = new DateTime('now', new DateTimeZone('Asia/Taipei'));
echo $dt->format('Y-m-d H:i:s');        // 格式化輸出
echo $dt->getTimestamp();               // 取得 Timestamp
$dt->modify('+1 day')->setTime(0,0,0);  // 運算方便

結語

掌握 time()、strtotime()、date() 三大核心函式,並注意時區一致性,即能輕鬆處理大多數時間戳需求。新專案建議改用 DateTime 物件導向介面,功能更強大且避免 2038 年問題。

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