2017-09-25 40 views
-2

私がやっていることは実際には1時間間隔で午前8時から午後9時まで反復していますが、正しい結果が得られません。これは、現在の時間とあなたの助けのために! 感謝を開始し特定の2つの時間間隔を取得する方法

<?php 
    $date = date("08:00"); 
    for($i=1; $i<=10; $i++) 
    { 
     $date = strtotime("+".$i." hour"); 
     echo date('H:i A', $date); 
    } 
?> 

以下の私のコードです。

+0

あなたはこのようにdate()を使用できますか?私は$ dateの値がdate( "08:00")であることを意味します; – MacBooc

+0

日付の最初の引数は時間ではなく、形式です。 http://php.net/manual/en/function.date.php – Andreas

答えて

1

ここに解凍するには、いくつかの異なる問題があります。

$date = date("08:00"); 

これは有用ではありません。 dateは、タイムスタンプをフォーマットするためのものです。このような時間:分の文字列からの作成には使用できません。

あなたはおそらくしたいことは、この問題が発生することはありませんでした

$date = strtotime("08:00"); 

理由は、あなたのループ内で使用すると、その後すぐに、それを上書きすることです:

$date = strtotime("+".$i." hour"); 

この作成されます。新しいタイムスタンプが、最初の時刻ではなくになりました。になります。 「+1時間」とは、タイムスタンプがnow + 1 hourであることを意味します。あなたは

$date = strtotime("+{$i} hour", $date); 

... 2番目の引数を使って、別のタイムスタンプの相対を作成するために strtotimeを使用することができます...しかし、あなたはまだ開始値を上書きしています。それでは、代わりに $startという変数にこれを入れてみましょう:

$start = strtotime("08:00"); 
... 
$date = strtotime("+".$i." hour", $start); 

これは、あなたが取得する:

出力します
<?php 
$start = strtotime("08:00"); 

for($i=0; $i<=10; $i++) { 
    $date = strtotime("+{$i} hour", $start); 
    echo date('H:i A', $date), PHP_EOL; 
} 

08:00 AM 
09:00 AM 
10:00 AM 
... 
18:00 PM 

それはかなり午後9時にあなたを取得していませんが、それは午前8時から10時間離れていないからです。しかし、私はあなたに最後の部分を残します。

はまたhttps://eval.in/867974

を参照してください、あなたはあなたの日付と&回を操作するためのオブジェクト指向のインターフェイスを与える、PHP's DateTime libraryで見たいと思うかもしれません。このような単純なスクリプトでは、重要ではありません。

関連する問題