蛋糕检查日期是否在特定日期范围内 PHP


cakeCheck if date is in specific date range PHP

我正在尝试这个,自从我上次用PHP编码以来已经有一段时间了。

我有一个函数可以检查给定日期是否在日期范围之间:

pr($this->isDateBetween("2014-11-15", "2014-12-05", "2014-06-14"));
public function isDateBetween($dt_start, $dt_check, $dt_end){
        if(strtotime($dt_check) >= strtotime($dt_start) && strtotime($dt_check) <= strtotime($dt_end)){
            return true;
        } else{
            return false;
        }
    }

但似乎我越来越false.预期结果应true,因为2014-12-05小于2014-06-14

12月不到6月,所以应该是真的吗?

也当我2014-06-14更改为2014-12-14时,它变成了现实。

抱歉,我不再更新 PHP。请耐心等待。

编辑

尝试将它们转换为 strtotime,但仍然得到错误的结果

解决方案存在在这里:

如何检查日期是否在给定范围内?

溶液:

将它们转换为时间戳是可以正常工作的方法,使用 strtotime,例如

$start_date = '2009-06-17';
$end_date = '2009-09-05';
$date_from_user = '2009-08-28';
check_in_range($start_date, $end_date, $date_from_user);

function check_in_range($start_date, $end_date, $date_from_user)
{
  // Convert to timestamp
  $start_ts = strtotime($start_date);
  $end_ts = strtotime($end_date);
  $user_ts = strtotime($date_from_user);
  // Check that user date is between start & end
  return (($user_ts >= $start_ts) && ($user_ts <= $end_ts));
}

预期结果应为 true,因为 2014-12-05 小于 2014-06-14 。

完全错了。代码正在工作。6月14日比12月12日"少"。因此,您的 12 月 12 日日期不在开始/结束日期之间。它已经过了范围的尽头。

预期结果应为 true,因为 2014-12-05 小于 2014-06-14 。

绝对不行。预期结果不是true。它是false,因为"2014-12-05"不小于"2014-06-14"。12月不到6月?以前从未听说过如此奇特的逻辑。

另外,当我将 2014-06-14 更改为 2014-12-14 时,它变成了真的。

没错。因为"2014-12-05"肯定小于"2014-12-14",所以true5 December明显小于14 December

这与 PHP 版本或 PHP 内置方法无关。这完全是关于你的逻辑。

我认为这就是你要找的:

pr($this->isDateBetween("2014-06-14", "2014-11-15", "2014-12-05"));
public function isDateBetween($dt_start, $dt_check, $dt_end){
        if(strtotime($dt_check) >= strtotime($dt_start) && strtotime($dt_check) <= strtotime($dt_end)){
            return true;
        } else{
            return false;
        }
}

这将返回true .