此函数返回两个日期之间的日期数组。
现在它完全正常,除了一些未知的原因,如果我把它作为11月或3月作为参数,我得到的数组少了一天。其他几个月工作完全没问题。我绝对无能为力。
function getListofDatesInRange2($fromDate, $toDate)
{
$fromDate = str_replace("-","/", $fromDate);
$toDate = str_replace("-","/", $toDate);
$dateMonthYearArr = array();
$fromDateTS = strtotime($fromDate);
$toDateTS = strtotime($toDate);
for ($currentDateTS = $fromDateTS; $currentDateTS <= $toDateTS; $currentDateTS += (60 * 60 * 24)) {
$currentDateStr = date("m-d-Y",$currentDateTS);
$dateMonthYearArr[] = $currentDateStr;
}
return $dateMonthYearArr;
}
我记录了它,而一个while循环解决了我的问题。 (虽然我不知道首先是什么问题)
function getListofDatesInRange2($fromDate, $toDate)
{
$fromDate = str_replace("-","/", $fromDate);
$toDate = str_replace("-","/", $toDate);
$dateMonthYearArr = array();
$fromDateTS = strtotime($fromDate);
$toDateTS = strtotime($toDate);
array_push($dateMonthYearArr, date('m-d-Y', $fromDateTS));
while($fromDateTS < $toDateTS) {
$fromDateTS += 86400;
array_push($dateMonthYearArr, date('m-d-Y', $fromDateTS));
}
return $dateMonthYearArr;
}
答案 0 :(得分:1)
几乎可以肯定,这是由多年前的一些人提出的,他们认为这一天应该在一个月和一年之间进行,而不是一些逻辑上的结束(大多数计算中的大端,英国英语中的小端)。
相反,请在输入YYYY-mm-dd
之前将输入日期设置为strtotime
格式。这将确保您始终能够获得正确的约会。
要测试这确实是您的问题,请尝试:
$fromDateTS = strtotime($fromDate);
echo date("m-d-Y",$fromDateTS);
确保显示的日期与您输入的日期相同。可能是,它不是。