2016-09-21 1 views
0

У меня 2 времени строки, как показано ниже:время печати между 10pm к 3am

10pm 
3am 

Я хочу напечатать время между выше заданной строки, как:

10pm 
11pm 
12am 
1am 
2am 
3am 

PHP код я пробовал:

<?php 
$new_otime = strtotime(date('H:i',strtotime('10pm'))); 
$close_time = strtotime(date('H:i',strtotime("3am"))); 
do { ?> 
<option value="<?php echo date("g a",$new_otime) ?>"><?php echo date("g a",$new_otime); ?></option> 
<?php 
$new_otime = $new_otime+=3600;      
} while ($new_otime == $close_time); 
?> 

Но это отголоски всего лишь 10 вечера в поле выбора. Как я могу эхо все время между этими строками?

ответ

2

Я предлагаю некоторую работу вокруг, чтобы сделать эту работу:

<?php 
$new_otime = strtotime(date('Y-m-d H:i',strtotime(date('Y-m-d').' 10pm'))); 
$close_time = strtotime(date('Y-m-d H:i',strtotime(date('Y-m-d').' 3am'))); 
if($close_time < $new_otime){ 
    $close_time = strtotime(date('Y-m-d H:i',strtotime(date('Y-m-d',strtotime('+1 day')).'3am'))); 
} 
do { ?> 
<option value="<?php echo date("g a",$new_otime) ?>"><?php echo date("g a",$new_otime); ?></option> 
<?php 
$new_otime = $new_otime+=3600;      
} while ($new_otime <= $close_time); 
?> 
  1. Проверьте конечное время больше
  2. Если не сделать это на следующий день
  3. Loop в то время как new_otime меньше close_time
+0

он будет идти в бесконечный цикл –

+0

Проблема заключается в том, что '10 pm' уже больше, чем' 3 am', поэтому он не будет зацикливаться – Gvidas

+0

Да, но я хочу распечатать время между ними. Есть идеи? –

0

Надеюсь, это то, что вы ищете:

$time=22; 
for($i=0;$i<6;$i++) { 
echo date("g a",mktime($time+$i,0,0,09,21,2016))."<br>"; 
} 
0

Попробуйте

$new_otime = "10pm"; 
$close_time = "3am"; 
$counter=0; 
while(date("g a",strtotime($new_otime)+3600*$counter)<=date("g a",strtotime($close_time))){ 
    echo date("g a",strtotime($new_otime)+3600*$counter).'<br>'; 
    $counter++; 

} 
0

Попробуйте этот код

<?php 
    $new_otime = "10pm"; 
    $close_time = "3am"; 
    $new_otime = strtotime(date_create_from_format("ha", $new_otime)->format("ha")); 
    $close_time = strtotime(date_create_from_format("ha", $close_time)->format("ha")); 
     do { 
      ?> 
      <option value="<?php echo date("ha", $new_otime) ?>"><?php echo date("ha", $new_otime); ?></option> 
      <?php 
      $new_otime = strtotime(date("ha", strtotime("+1 hours", $new_otime))); 
     } while ($new_otime != $close_time); 
     if ($new_otime == $close_time) { 
      ?> 
      <option value="<?php echo date("ha", $new_otime) ?>"><?php echo date("ha", $new_otime); ?></option> 
    <?php } ?> 
2

Вы также можете попробовать использовать DateTime и DatePeriod:

$from = date_create_from_format('ha', '10pm'); 
//create 5 interations, each adds an additional hour 
$dp = new DatePeriod($from, new DateInterval('PT1H'), 5); 

/** @var DateTime $d */ 
foreach ($dp as $d) { 
    echo $d->format('ha'); 
} 
Смежные вопросы