我正在创建一个函数来检查两个日期是否等于一个月或一个月的一部分。
我正在尝试在if语句中使用它:
$result["from_date"] = $_GET["from_date"];
$result["to_date"] = $_GET["to_date"];
$start = strtotime($result["from_date"]);
$stop = strtotime($result["to_date"]);
$diff = ($stop - $start); //Diff in seconds
$timespan = ($diff / 86400) + 1;
echo 'timespan - '.$timespan.'<br>';
if(cal_days_in_month(CAL_GREGORIAN, ChangeDateFormat($result["from_date"], 'm'), ChangeDateFormat($result["from_date"], 'Y')) == $timespan) {
return true;
}
我使用了日期2018-10-01和2018-10-31,它们将时间跨度返回为31.041666666667,这意味着在上述if中返回true。
我也尝试过日期2018-08-01和2018-08-30,它们不会返回true,所以可以正常工作。
我只是十月份的比赛,我不知道为什么。
答案 0 :(得分:2)
正如我在评论中写道,这是由于夏令时。
您可以使用DateTime计算日期之间的天数(并加1)。
$result["from_date"] = "2018-10-01";
$result["to_date"] = "2018-10-31";
$start = new DateTime($result["from_date"]);
$stop = new DateTime($result["to_date"]);
$diff = $stop->diff($start)->format("%a") +1;
echo 'timespan - '.$diff.' days<br>';