2012-04-17 45 views
3
循环

说你给两台Unix时间戳是这样的:通过每一天在这个范围内,输出它是这样的通过所有的Unix时间戳范围内的天PHP

$startDate = 1330581600; 
$endDate = 1333170000; 

我要循环:

我试过寻找某种类型的功能来做到这一点,但我不知道如果它甚至可能。

回答

8

正如我爱DATETIME,DateInterval和DatePeriod,这里是我的解决方案:

$start = new DateTime(); 
$end = new DateTime(); 

$start->setTimestamp(1330581600); 
$end->setTimestamp(1333170000); 

$period = new DatePeriod($start, new DateInterval('P1D'), $end); 

foreach($period as $dt) { 
    echo $dt->format('Y-m-d'); 
    echo PHP_EOL; 
} 

这似乎首先被混淆,但它是一个非常合乎逻辑的做法。

随着DatePeriod你正在定义一个时间间隔为1天的开始和结束(查看格式DateInterval),然后你可以迭代它。
最后,在每次迭代中,你得到一个DateTime object上,您可以使用DateTime::format()

+3

+1使用'DateTime'类家族,因为他们非常该死的真棒。 – FtDRbwLXw6 2012-04-17 18:38:19

+1

为你+1。我完全和你一样! – 2012-04-17 18:38:42

2
for ($t = $start; $t < $end; $t = strtotime('+1 day', $t)) { 
    ... 
}