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

PHP 使用 strtotime 計算兩個日期相差天數的正確方法

     編輯:PHP 相關知識

前言

計算兩個日期之間的天數差是常見需求。PHP 的 strtotime() 能將英文日期字串轉換為 Unix 時間戳(秒數),再以一天 86400 秒換算天數。本文說明正確用法並修正原文中的程式碼錯誤。

strtotime() 基本介紹

  • 功能:解析英文日期時間描述為 Unix 時間戳(自 1970-01-01 起的秒數)。
  • 成功返回整數時間戳,失敗返回 FALSE(PHP 5.1.0 前返回 -1)。
  • 受時區環境變數 TZ 影響,建議配合 date_default_timezone_set() 使用。

正確計算天數差範例

<?php
// 設定時區避免誤差
date_default_timezone_set('Asia/Taipei');

$date1 = '2024-01-15';
$date2 = '2024-01-01';

// 取得時間戳
$ts1 = strtotime($date1);
$ts2 = strtotime($date2);

// 計算絕對天數差
$days = abs($ts1 - $ts2) / 86400;

echo "兩日期相差 $days 天"; // 輸出:兩日期相差 14 天
?>

常見錯誤與修正

原文程式碼 (strtotime() - strtotime()) / (60*60*24) 缺少參數,正確寫法應傳入日期字串。此外,直接相減可能得到負數,建議使用 abs() 取絕對值。

進階:使用 DateTime 類別(PHP 5.3+ 推薦)

<?php
$dt1 = new DateTime('2024-01-15');
$dt2 = new DateTime('2024-01-01');
$interval = $dt1->diff($dt2);
echo $interval->days . ' 天'; // 更精確,自動處理閏年、時區
?>

DateTime::diff() 返回 DateInterval 物件,提供更豐富的日期差資訊(年、月、日、時、分、秒)。

總結

雖然 strtotime() 配合秒數換算可快速得到天數差,但現代 PHP 專案建議使用 DateTime 類別,功能更強大且避免時區陷阱。希望本文對您的 PHP 程式設計有所幫助。

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