我有以下PHP函数,它应返回两个日期之间的日期。 由于某些原因,有一天总是重复。
0 ≤ q < q+1 ≤ p
结果是:
$plusOneWeek = date("Y-m-d",strtotime("+1 week"));
$dates = getDates(date("Y-m-d"), $plusOneWeek);
function getDates($startTime, $endTime) {
$day = 86400;
$format = 'Y-m-d';
$startTime = strtotime($startTime);
$endTime = strtotime($endTime);
//$numDays = round(($endTime - $startTime) / $day) + 1;
$numDays = round(($endTime - $startTime) / $day); // remove increment
$days = array();
for ($i = 0; $i < $numDays; $i++) { //change $i to 1
$addDay = date($format, ($startTime + ($i * $day)));
$days[] = $addDay;
}
return $days;
}
如您所见,这个日期Array
(
[0] => 2015-10-23
[1] => 2015-10-24
[2] => 2015-10-25
[3] => 2015-10-25
[4] => 2015-10-26
[5] => 2015-10-27
[6] => 2015-10-28
)
有两次。我不明白为什么。
答案 0 :(得分:2)
如果我运行你的代码我没有重复,但无论如何我会完全避免round()
方法(它也更短)。
function getDates($startTime, $endTime){
$days = array();
$currentDay = $startTime;
do {
$days[] = $currentDay;
$currentDay = date('Y-m-d', strtotime($currentDay .' +1 day'));
} while ($currentDay < $endTime);
return $days;
}
(可以随意添加一些错误处理,例如$endTime < $startTime
等等)