2011-12-22 217 views
1

我有$ 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?

回答

2

你可以做这样的:对于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 />"; 
?> 
2

像这样的东西应该工作:

$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); 
+1

间隔规范应为“PT30M”,间隔30分钟。 P30M是30个月。 – tashi 2014-01-17 05:02:05

+0

@tashicoder absolutly正确:)谢谢你的评论! – 2014-01-20 13:48:30

2

看你怎么去用这个..

$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

相关问题