2012-01-20 67 views
1

我想查看兩次間隔30分鐘的迭代是如何進行的。如何檢查兩個小時之間的迭代?

我有,例如:

$one = new DateTime('2012-01-20 06:00'); 
$two = new DateTime('2012-01-20 17:30'); 

$first = $one->format('H:i'); 
$second = $two->format('H:i'); 
$interval = 30; 

在這個例子$迭代= 23,但如何計算呢?

+3

你創建一個'DatePeriod'並使用'count'就可以了。使用SO Search for DatePeriod來學習如何。 – Gordon

+0

可能重複[如何找到兩個指定日期之間的日期?](http://stackoverflow.com/questions/2736784/how-to-find-the-dates-between-two-specified-date) – Gordon

回答

6

用所需時間間隔分隔日期時間之間的分鐘數。

$one = strtotime('2012-01-20 06:00'); 
$two = strtotime('2012-01-20 17:30'); 
$interval = 30; 

echo round(($two - $one)/($interval * 60)); 

(我已經採取了快捷方式,通過數秒,在30分鐘內我除以秒爲單位)

http://codepad.org/yhv0hdWl

1

你可能會更好使用Unix time這是1970年1月1日以來的秒數。

$now = date("U"); 
// In half an hour: 
$future = $now + (30 * 60); 
//   (minutes * seconds in a minute) 

$diff = $now - $future; 

echo ($diff/60); 
// returns 30 
+1

Err。沒有。他不會。 –

+1

對不起,我不知道你知道他正在研究的項目。 –

+2

你可能不會相信這一點,我知道這可能是CNN的材料,它非常令人興奮,但是 - 他指定了兩個DateTime對象,而且你不會相信這一點 - DateTime實際上考慮到了DST!我知道,聽起來令人難以置信,有人實際上指定了他們使用的內容,然後又提供了一段實際上不起作用的代碼,並使用了原始規格中沒有的更糟糕的機制!但是,嘿,這不像是你的錯,它只是在發佈之前閱讀了一些內容,我知道這一定很難。 –

1

這與Tatu Ulmanen's answer基本相同,但使用DateTime類作爲’已經完成。

$one = new DateTime('2012-01-20 06:00'); 
$two = new DateTime('2012-01-20 17:30'); 

$first = $one->getTimestamp(); 
$second = $two->getTimestamp(); 
$interval = 30; 

echo round(($second - $first)/($interval * 60)); 
相關問題