我正准备一个节日网站。我有一个表格,其中包含节日日期的日期时间字段。 节日将在“2013年3月6日”和“2013年4月7日”之间举行。 所以我在这里的答案中创建了循环:
Schema::create('dates',function($table)
{
$table->increments('id');
$table->date('date');
$table->timestamps();
});
$starting_date = new DateTime('2013-03-06');
$ending_date = new DateTime('2013-04-06');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($starting_date , $interval, $ending_date);
foreach($period as $dt)
{
DB::table('dates')->insert(array(
'date' => $dt
));
}
数据库填充到4月4日,循环不会超过30天。 你能帮助我找到错过的日子吗?
ps:我使用了替代while循环,结果相同:
$starting_date = new DateTime('2013-03-06');
$ending_date = new DateTime('2013-04-07');
while($starting_date <= $ending_date){
DB::table('dates')->insert(array(
'date' => $starting_date
));
}
$starting_date->add(new DateInterval('P1D'));
}
答案 0 :(得分:2)
我想出的一个非常快速和肮脏的解决方案是:
$starting_date = strtotime('2013-03-06');
$ending_date = strtotime('2013-04-06');
while($starting_date <= $ending_date)
{
echo date('d/m/y', $starting_date) . '<br />';
$starting_date = strtotime('1 day', $starting_date);
}
哪个输出:
06/03/13
07/03/13
08/03/13
09/03/13
10/03/13
11/03/13
12/03/13
13/03/13
14/03/13
15/03/13
16/03/13
17/03/13
18/03/13
19/03/13
20/03/13
21/03/13
22/03/13
23/03/13
24/03/13
25/03/13
26/03/13
27/03/13
28/03/13
29/03/13
30/03/13
31/03/13
01/04/13
02/04/13
03/04/13
04/04/13
05/04/13
06/04/13
您可以简单地用您的查询替换回声。
答案 1 :(得分:1)
just add 23:59:59 to the end of the $ending_date
$starting_date = new DateTime('2013-03-06 00:00');
$ending_date = new DateTime('2013-04-06 23:59:59');
$interval = new DateInterval('P1D');
$period = new DatePeriod($starting_date , $interval, $ending_date);
foreach ($period as $date) {
echo $date->format('Y-m-d')."<br/>";
}
print_r($period);exit;
哪个输出
2013年3月6日2013年3月7日
2013年3月8日2013年3月9日
2013年3月10日
2013- 03-11
2013年3月12日2013年3月13日
2013年3月14日2013年3月15日
2013年3月16日<无线电通信/> 2013年3月17日2013年3月18日
2013年3月19日
二零一三年三月二十零日
2013年3月21日
2013-03 -22
2013-03-23
2013年3月24日2013年3月25日
2013年3月26日2013年3月27日
2013年3月28日2013年3月29日
2013年3月30日2013年3月31日
2013年4月1日
2013-04- 02
2013年4月3日2013年4月4日
2013年4月5日2013年4月6日