我有这段代码
<?php
function getDatesBetween2Dates($startTime, $endTime) {
$day = 86400;
$format = 'd-m-Y';
$startTime = strtotime($startTime);
$endTime = strtotime($endTime);
$numDays = round(($endTime - $startTime) / $day) + 1;
$days = array();
for ($i = 0; $i < $numDays; $i++) {
$days[] = date($format, ($startTime + ($i * $day)));
}
return $days;
}
$days = getDatesBetween2Dates(
date('d-m-Y', strtotime("$start")),
date('d-m-Y',strtotime("$end"))
);
foreach ($days as $key => $value) {
// ...
}
然后继续搜索数据库并根据日期返回显示结果。我没有写这段代码,也不知道我从哪里得到它。
问题是回来是2014年11月2日???它弄乱了每件事。 任何帮助都是极好的。我将尝试共享页面链接。 (该页面包含个人信息)
http://djwservices.co.uk/invoices/calendar.php
作为一个侧面问题,是否有人可以通过onclick进行扩展/缩小,这将是非常棒的。
提前致谢 DAZ
答案 0 :(得分:0)
使用PHP 5.5生成器,您可以执行以下操作:
function period($begin, $interval, $end) {
while ($begin <= $end) {
yield $begin;
$begin->add($interval);
}
}
$interval = new \DateInterval('P1D');
$begin = new \DateTime( '2014-11-01' );
$end = new \DateTime( '2014-11-30' );
foreach (period($begin, $interval, $end) as $dt) {
echo $dt->format( "Y-m-d" ), PHP_EOL;
}
答案 1 :(得分:0)
使用函数date_diff应该更容易。从手册:
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
这是一个修改后的版本,如果你还没有php 5.3:
function getDatesBetween2Dates($startTime, $endTime) {
$datetime1 = new DateTime($startTime);
$datetime2 = new DateTime($endTime);
$interval = round(($datetime2->format('U') - $datetime1->format('U')) / (60*60*24));
for ($i = 0; $i < $interval; $i++) {
$dateTemp = $datetime1;
$str = "+" . $i . " day";
$dateTemp = $dateTemp->modify($str);
$days[] = $dateTemp->format('d-m-Y');
}
return $days;
}