首页 > 后端开发 > php教程 > 为什么我的 PHP 代码无法准确检查今天的日期是否在日期范围内?

为什么我的 PHP 代码无法准确检查今天的日期是否在日期范围内?

DDD
发布: 2024-11-26 03:42:07
原创
584 人浏览过

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板