在 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中文网其他相关文章!