2012-01-20 9 views
1

間隔が30分の2つの日付の間の反復の確認をしたいと思います。この例$反復= 23で2時間以内に反復をチェックする最良の方法は?

$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; 

、しかし、私はこれをどのように計算することができます。

私は例えば持っていますか?

+3

あなたは 'DatePeriod'を作成し、それに' count'を使います。方法を知るには、DatePeriodのSO Searchを使用します。 – Gordon

+0

[指定された2つの日付の間の日付の検索方法](http://stackoverflow.com/questions/2736784/how-to-find-the-dates-between-two-specified-date) – Gordon

答えて

6

datetimesの間隔を希望の間隔で分けます。

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

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

http://codepad.org/yhv0hdWl

1

あなたはUnix timeを使用したほうが良いかもしれません(私はショートカットを撮影したし、30分で秒の量によって秒の量を分けています)がは、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素材だと分かりますが、とてもエキサイティングですが、彼は2つの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));