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

PHP 計算兩個日期相差天數的多種方法

     編輯:PHP 相關知識

PHP 計算兩個日期相差天數的多種方法

日期差值計算是常見需求,本文總結三種主流方法並分析優劣。

方法一:strtotime + 秒數換算(推薦)

<?php
// 過去天數
$Date_1 = date("Y-m-d");
$Date_2 = "2016-10-27";
$d1 = strtotime($Date_1);
$d2 = strtotime($Date_2);
$Days = round(($d1 - $d2) / 3600 / 24);
echo "今天與 2016-10-27 相差 {$Days} 天<br>";

// 未來天數
$Date_2 = "2018-09-09";
$d2 = strtotime($Date_2);
$Days = round(($d2 - $d1) / 3600 / 24);
echo "今天到 2018-09-09 還有 {$Days} 天";

優點:代碼簡潔、支持任意日期格式、性能好。
注意:round 處理夏令時導致的非整數天數。

方法二:Julian Day Count(天文算法)

$arrayStartDate = explode("/", $myStartDate); // 月/日/年
$arrayEndDate   = explode("/", $myEndDate);
$jdStart = cal_to_jd(CAL_GREGORIAN, $arrayStartDate[1], $arrayStartDate[0], $arrayStartDate[2]);
$jdEnd   = cal_to_jd(CAL_GREGORIAN, $arrayEndDate[1],   $arrayEndDate[0],   $arrayEndDate[2]);
$duration = $jdEnd - $jdStart + 1; // 含首尾

優點:歷史日期精確、無時區影響。
缺點:格式固定需手動拆分。

方法三:MySQL DATEDIFF(數據庫層面)

SELECT DATEDIFF(yxdate_star, NOW()) AS days_diff FROM table;

返回正數表示未來,負數表示過去。適合直接在 SQL 中篩選「N 天內到期」記錄。

最佳實踐建議

  • 應用層首選 strtotime,配合 DateTime 類(PHP 5.3+)更面向對象
  • 跨時區業務統一用 UTC 時間戳計算
  • 大批量查詢下推到 MySQL DATEDIFF

掌握多種方法,根據業務場景靈活選擇。

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