2016-11-26 5 views
0

これは私が試しているコードですが、今のところi = 21の値は< = 2ではありません。解決策は何でしょうか?PHPを使ってドロップダウンで時間を表示したい。 12:00,12:15,12:30などのチャンクになります

$pdts = array(); 
for($i = ltrim(date('H'), '0'); $i <= ltrim(date('H', time() + 14400), '0') * 2; $i++) { 
    for ($j = 15; $j <= 45; $j += 15) { 
     if ($j > ltrim(date('i'), '0') && ltrim(date('H'), '0') == $i) { 
      $date = date("H.i", strtotime("$i:$j")); 
      $value = $date."h"; 
      $pdts[$value] = $date; 
     } 
    } 
    if (ltrim(date('i'), '0') != 0 && ltrim(date('H'), '0') != $i) { 
     $date = date("H.i", strtotime("$i:00")); 
     $value = $date."h"; 
     $pdts[$value] = $date; 
    } 
    for ($k = 15; $k <= 45; $k += 15) { 
     if (ltrim(date('H'), '0') != $i) { 
      $date = date("H.i", strtotime("$i:$k")); 
      $value = $date . "h"; 
      $pdts[$value] = $date; 
     } 
    } 
} 
+0

をGETTするあなたがしようとした場合あなたは本当に、これは任意のより複雑にすることができませんでした。 [DateTime](http://php.net/manual/en/datetime.add.php)を見てください – RiggsFolly

+0

私はできることをやったので、私はPHPに新しいです –

答えて

1

私が理解する限り、次の4時間は15分のチャンクを取得しようとしています。 PHP DateTime/DateInterval/DatePeriodクラスが組み込まれています。現在の日付し1.Get

&時間:上記のコードについて

// current time - beginning of chunks 
$begin = new DateTime(); 

// adjust $begin time for next '15/30/45/00' chunk 
$next = $begin->format("i") % 15; 
if ($next !== 0) { 
    $begin->modify('+' . (15 - $next) . 'minutes'); 
} 

// time of last chunk 
$end = clone $begin; 
$end->modify("+4 hours"); 

// chunk interval (15 minutes) 
$interval = new DateInterval('PT15M'); 
// date/time period onject 
$timeRange = new DatePeriod($begin, $interval, $end); 

$pdts = array(); 
foreach($timeRange as $time){ 
    $pdts[] = $time->format("H:i"); 
} 

いくつかの単語:あなたはそのようにそれらを使用することができます。 15分のchuncksの一つに

$begin = new DateTime(); 

2.Adjust現在の時刻:現在の時間は15分chuncksを生成するための時間のbegginingです。これを行う最も簡単な方法は、現在の分を15分ごとに分けることです。デビジョンのリマインダーがゼロであれば、現在の時刻よりもOKです。それから開始することができます。

$end = clone $begin; 
$end->modify("+4 hours"); 

4:

$next = $begin->format("i") % 15; 
if ($next !== 0) { 
    $begin->modify('+' . (15 - $next) . 'minutes'); 
} 

3.Toは、我々は時間を開始するために4時間を追加する必要がある時間帯の終了時刻を取得する:そうでなければ、我々は有効な開始時刻を取得するために、現在の時間に(15 - reminder)分を追加する必要があります我々は、チャンク期間との時間間隔オブジェクトを作成する必要があります。

$interval = new DateInterval('PT15M'); 

5.Create日の期間オブジェクト(それは私たちのためにすべての仕事を行います)

日付期間オブジェクトを介して3210
$timeRange = new DatePeriod($begin, $interval, $end); 

6.Iterateすべてのチャンク

$pdts = array(); 
foreach($timeRange as $time){ 
    $pdts[] = $time->format("H:i"); 
} 
+0

ありがとうございます。これは私が欲しいものです –

関連する問題