你需要这样的事:
$date0 = \DateTime::createFromFormat('M j, Y', 'Oct 1, 2013');
$date1 = \DateTime::createFromFormat('M j, Y', 'Oct 10, 2013');
$day = new \DateInterval('P1D');
while ($date0 <= $date1) {
echo $date0->format('M j, Y'), PHP_EOL;
$date0->add($day);
}
输出:
Oct 1, 2013
Oct 2, 2013
Oct 3, 2013
Oct 4, 2013
Oct 5, 2013
Oct 6, 2013
Oct 7, 2013
Oct 8, 2013
Oct 9, 2013
Oct 10, 2013
您可以添加更多checkings insithe的while
循环,以获得所需的行为:
// These could come from the database
$dates = ['Oct 4, 2013', 'Oct 7, 2013', 'Oct 8, 2013'];
$fromDate = 'Oct 1, 2013';
$toDate = 'Oct 10, 2013';
// Solution
// Remove comments below in order to always show the start and end dates
//$dates[] = $fromDate;
//$dates[] = $toDate;
$date0 = \DateTime::createFromFormat('M j, Y', $fromDate);
$date1 = \DateTime::createFromFormat('M j, Y', $toDate);
$day = new \DateInterval('P1D');
while ($date0 <= $date1) {
$string = $date0->format('M j, Y');
echo (in_array($string, $dates) ? $string : 'Absent'), PHP_EOL;
$date0->add($day);
}
输出:
Absent
Absent
Absent
Oct 4, 2013
Absent
Absent
Oct 7, 2013
Oct 8, 2013
Absent
Absent
编辑PHP < 5.3
基本例如:
$date0 = new DateTime('Oct 1, 2013');
$date1 = new DateTime('Oct 10, 2013');
while ($date0 <= $date1) {
echo $date0->format('M j, Y'), PHP_EOL;
$date0->modify('+1 day');
}
高级例如:
// These could come from the database
$dates = ['Oct 4, 2013', 'Oct 7, 2013', 'Oct 8, 2013'];
$fromDate = 'Oct 1, 2013';
$toDate = 'Oct 10, 2013';
// Solution
// Remove comments below in order to always show the start and end dates
//$dates[] = $fromDate;
//$dates[] = $toDate;
$date0 = new DateTime($fromDate);
$date1 = new DateTime($toDate);
while ($date0 <= $date1) {
$string = $date0->format('M j, Y');
echo (in_array($string, $dates) ? $string : 'Absent'), PHP_EOL;
$date0->modify('+1 day');
}
我是在假设 '缺席' 纠正日期在您的数据库中没有条目? – Cups
在滚动浏览返回的查询时,是否可以使用php打印缺席日期? – unska
1.你尝试过什么? 2.如果你搜索这个网站或者使用谷歌,你会发现你的解决方案 –