两个日期之间的所有日期,间隔30分钟
问题描述:
我有$ 1 ='2011-12-22 07:00和$ 2 ='2011-12-22 11:30';两个日期之间的所有日期,间隔30分钟
我想以30分钟的时间间隔接收所有数据。对于这个例子应该是:
2011-12-22 07:00
2011-12-22 07:30
2011-12-22 08:00
2011-12-22 08:30
2011-12-22 09:00
2011-12-22 09:30
2011-12-22 10:00
2011-12-22 10:30
2011-12-22 11:00
2011-12-22 11:30
是否可能这与循环FOR?
答
你可以做这样的:对于DateInterval
<?php
$interval = 1800; // Interval in seconds
$date_first = "2011-12-22 07:00";
$date_second = "2011-12-22 11:30";
$time_first = strtotime($date_first);
$time_second = strtotime($date_second);
for ($i = $time_first; $i < $time_second; $i += $interval)
echo date('Y-m-d H:i', $i) . "<br />";
?>
答
像这样的东西应该工作:
$dates = array();
$start = new DateTime($one);
$until = new DateTime($two);
while($start->getTimestamp() <= $until->getTimestamp()) {
$dates[] = clone $start;
$start->add(new DateInterval("PT30M"));
}
echo '<pre>';
print_r($dates);
答
看你怎么去用这个..
$one = strtotime('2011-12-22 07:00');
$two = strtotime('2011-12-22 11:30');
while($two>$one){
$interval_timestamp = $one += 60*30;
echo date('r',$interval_timestamp);//output as needed.
}
+1
我建议你把它分成多行,特别是'echo date'这行是违反直觉的。 – 2011-12-22 14:41:33
+0
感谢您的建议 – 2011-12-22 14:50:36
间隔规范应为“PT30M”,间隔30分钟。 P30M是30个月。 – tashi 2014-01-17 05:02:05
@tashicoder absolutly正确:)谢谢你的评论! – 2014-01-20 13:48:30