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

PHP 日期時間差計算:從秒數到天數的完整解析

     編輯:PHP 相關知識

PHP 計算兩個日期間的天數差,核心在於將日期轉為 Unix 時間戳(秒數)再換算。本文說明標準做法與常見誤區。

標準作法:mktime + 秒數換算

<?php
// 起訖日期:1998-05-03 至 1999-06-05
$start = mktime(0, 0, 0, 5, 3, 1998);
$end   = mktime(0, 0, 0, 6, 5, 1999);

// 秒數差除以一天秒數 (86400)
$days = round(($end - $start) / 86400);

echo $days; // 輸出: 398
?>

關鍵細節說明

  • mktime(時, 分, 秒, 月, 日, 年) 參數順序易混淆,建議改用 strtotime()
  • 皆設為 00:00:00 避免時分秒干擾
  • 使用 86400 (60×60×24) 而非 3600/24 分步運算,精度更高
  • round() 四捨五入處理夏令時間導致的 23/25 小時誤差

現代寫法:DateTime 類別(PHP 5.3+ 推薦)

<?php
$start = new DateTime('1998-05-03');
$end   = new DateTime('1999-06-05');
$diff  = $start->diff($end);

echo $diff->days; // 直接取得天數差
?>

常見應用場景

  • 圖書借閱天數計算
  • 會員到期天數提醒
  • 專案工期統計
  • 年齡計算(配合 DateTime::diff() 取得年/月/日)

避坑指南

  1. 勿直接相減日期字串
  2. 跨時區專案必須統一時區(date_default_timezone_set())
  3. 閏年、夏令時間自動由時間戳處理,無需手動調整
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved