首頁 > 後端開發 > php教程 > 為什麼我的 PHP 程式碼無法準確檢查今天的日期是否在日期範圍內?

為什麼我的 PHP 程式碼無法準確檢查今天的日期是否在日期範圍內?

DDD
發布: 2024-11-26 03:42:07
原創
596 人瀏覽過

Why is my PHP code not accurately checking if today's date falls within a date range?

在PHP 中檢查日期範圍

在PHP 中,您可能會遇到需要確定特定日期是否在以下範圍內的情況日期。這通常用於有效性檢查或日程安排的應用程式。

問題:

您在嘗試使用以下方法檢查今天的日期是否位於兩個合約日期之間時遇到了問題以下程式碼:

$paymentDate = date('d/m/Y');
$contractDateBegin = date('d/m/Y', '01/01/2001');
$contractDateEnd = date('d/m/Y', '01/01/2015');

if ($paymentDate > $contractDateBegin && $paymentDate < $contractDateEnd) {
  echo "is between";
} else {
  echo "NO GO!";
}
登入後複製

但是,此程式碼未按預期運行,因此您不確定您要做什麼錯過了。

答案:

所提供代碼中的一個關鍵錯誤是 $ paymentDate 使用的日期格式不正確。為了有效地比較日期,必須將它們轉換為一致的格式,通常是“YYYY-MM-DD”格式。為此,您可以利用strtotime() 函數:

$paymentDate = date('Y-m-d');
$paymentDate = date('Y-m-d', strtotime($paymentDate));
登入後複製

此外,為了確保今天的日期在範圍內,請使用>=<= 而不是><。這是因為您的程式碼目前排除了該範圍的最後一天。

下面更正的程式碼應該可以正常運作,以檢查今天的日期是否在合約日期之間:

$paymentDate = date('Y-m-d');
$paymentDate = date('Y-m-d', strtotime($paymentDate));
//echo $paymentDate; // echos today!
$contractDateBegin = date('Y-m-d', strtotime("01/01/2001"));
$contractDateEnd = date('Y-m-d', strtotime("01/01/2012"));

if (($paymentDate >= $contractDateBegin) && ($paymentDate <= $contractDateEnd)) {
    echo "is between";
} else {
    echo "NO GO!";
}
登入後複製

注意:如果您的原始程式碼使用了不同的日期格式(例如“dd/mm/YYYY”),請務必使用以下命令將其轉換為“YYYY-MM-DD” strtotime()函數以確保準確比較。

以上是為什麼我的 PHP 程式碼無法準確檢查今天的日期是否在日期範圍內?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板