我正在尝试这个,因为我上次使用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更新了。请耐心等待。
EDITS
尝试将这些转换为strtotime但仍然得到错误的结果
答案 0 :(得分:0)
解决方案存在于此处:
How to check if a date is in a given range?
<强> SOLUTION:强>
将它们转换为时间戳是可行的,使用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));
}
答案 1 :(得分:0)
预期结果应为真,因为2014-12-05低于2014-06-14。
完全错了。代码 IS 正在运行。 6月14日是&#34; less&#34;比12月12日。因此,您的12月12日日期在开始/结束日期之间不。它超过了范围的终点。
答案 2 :(得分:0)
预期结果应为真,因为2014-12-05低于2014-06-14。
绝对不是。预期结果不是true
。它是false
,因为"2014-12-05"
不小于"2014-06-14"
。十二月不到六月?从来没有听说过这种奇特的逻辑。
此外,当我将2014-06-14更改为2014-12-14时,它变为现实。
那是对的。由于"2014-12-05"
肯定小于"2014-12-14"
,因此它是true
。 5 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
。