2012-04-17 91 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)) { 
    ... 
}