2014-09-19 83 views
-1

我想要打印时间从00:0023.30,间隔时间为15 minute。像00.0000.15,00.30等。我该怎么做 ?时间表从上午12点到上午12点

任何人都可以帮助我吗?

代码:

<table border=2> 
<?php 
$time = 23; 
$k=0;  
for ($i = 12; $i <= $time; $i++) { 
     for ($min = 0; $min < 2; $min++) { 
      ?> 
      <tr>   
       <td><?php 
        if (($min % 2) == 0) { 
         if (strlen($i) == 1) 
          echo $str1 = "0" . $i . ":00"; 
         else 
          echo $str1 = $i . ":00"; 
        }else{ 
        if (strlen($i) == 1) 
         echo $str1 = "0" . $i . ":30"; 
        else 
         echo $str1 = $i . ":30";}}} 
        ?></td></tr> 

这是给我的输出每30个minute.I想我。如何能做到这一点的改变这种每15分钟与same logic

+0

你明白你发布的代码? – mafu 2015-04-14 10:05:56

+0

代码有问题吗? – Twix 2015-04-14 10:21:18

回答

0

尝试,如果你从00:00开始$i = 0

<?php 
$time = 23; 
$k=0;  
for ($i = 12; $i <= $time; $i++) { 
     for ($min = 0; $min < 4; $min++) { 
      ?> 
      <tr>   
       <td><?php 
        if (($min % 4) == 0) { 
         if (strlen($i) == 1) 
          echo $str1 = "0" . $i . ":00"; 
         else 
          echo $str1 = $i . ":00"; 
        } 
        elseif (($min % 3) == 0) { 
         if (strlen($i) == 1) 
          echo $str1 = "0" . $i . ":45"; 
         else 
          echo $str1 = $i . ":45"; 
        } 
        elseif (($min % 2) == 0) { 
         if (strlen($i) == 1) 
          echo $str1 = "0" . $i . ":30"; 
         else 
          echo $str1 = $i . ":30"; 
        } 

        else{ 
        if (strlen($i) == 1) 
         echo $str1 = "0" . $i . ":15"; 
        else 
         echo $str1 = $i . ":15";}}} 
        ?> 
11
$time = new \DateTime("midnight"); 
    $endTime = new \DateTime("midnight tomorrow"); 

    echo "<table border=2>"; 
    while ($time < $endTime) { 
     echo "<tr><td>" . $time->format("H:i") . "</td></tr>"; 
     $time->modify("+15 minutes"); 
    } 
    echo "</table>"; 

它更干净,更短,FAR更容易修改。

+0

“+1”多数民众赞成在美! – mithunsatheesh 2014-09-19 08:53:25

+0

非常好的答案和风格 – DKSan 2014-09-19 08:54:50

+0

具有相同的逻辑? – 2014-09-19 08:55:45

3
<?php 
$start_time = "00:00:00"; 
$end_time = "23:45:00"; 
echo "<table>"; 
for($time = strtotime($start_time); $time <= strtotime($end_time); $time += 900) { 
?> 
    <tr><td><?php echo date("H:i",$time)."<br/>";?></td></tr> 
<?php } 
echo "</table>"; 
?> 
0

我的尝试,这是刚刚整理现有的逻辑想:

<?php 

$time = 23; 
$k = 0; // not used anywhere? 
$mins = [0, 15, 30, 45]; 

for ($i = 12; $i <= $time; $i++) { 
    for ($min = 0; $min <= 60; $min++) { 
     ?> 
     <tr>   
      <td> 
       <?php 
        if (in_array($min, $mins)) { 
         echo $str1 = str_pad($i, 2, "0", STR_PAD_LEFT) . ":" . str_pad($min, 2, "0", STR_PAD_LEFT); 
        } 

    } 
} 

?> 

所以你可以修改数组如果您想再次添加并且使用str_pad,以便小时和分钟为零填充,从而不需要使用if语句中的几个。

也应该将in_array支票移动到tr之外,以避免创建56个空白行。

0
<table border=2> 
    <?php 
    $time = 23; 
    for ($i = 12; $i <= $time; $i++) { 
     for ($min = 0; $min < 4; $min++) { 
      ?> 
      <tr>   
       <td> 
        <?php 
        switch ($min) { 
         case '0': echo $i . ':00'; 
          break; 
         case '1': echo $i . ':15'; 
          break; 
         case '2': echo $i . ':30'; 
          break; 
         case '3': echo $i . ':45'; 
          break; 
        } 
        ?> 
       </td> 
      </tr> 
      <?php 
     } 
    } 
    ?> 
</table> 
0
<table border=2> 
<?php 
$time = 23; 
$k=0;  
for ($i = 12; $i <= $time; $i++) { 
     for ($min = 0; $min < 4; $min++) { 
      ?> 
      <tr>   
       <td><?php 
        if (($min % 4) == 0) { 
         if (strlen($i) == 1) 
          echo $str1 = "0" . $i . ":00"; 
         else 
          echo $str1 = $i . ":00"; 
        }else if (($min % 4) == 1){ 
         if (strlen($i) == 1) 
          echo $str1 = "0" . $i . ":15"; 
         else 
          echo $str1 = $i . ":15"; 
        }else if (($min % 4) == 2){ 
         if (strlen($i) == 1) 
          echo $str1 = "0" . $i . ":30"; 
         else 
          echo $str1 = $i . ":30"; 
        }else{ 
         if (strlen($i) == 1) 
          echo $str1 = "0" . $i . ":45"; 
         else 
          echo $str1 = $i . ":45"; 
        } 


        }} 
        ?> 
</td></tr> 
+0

你可以添加几行来解释你的解决方案?谢谢。 – m4rtin 2014-09-19 09:55:23

0

这是我尝试

<table border=2> 
<?php 
$h = 0; 
$m = 0; 
while($h <= 23) 
{ 
    while($m < 60) 
    { 
     $hour = sprintf('%02d',$h); 
     $minute = sprintf('%02d',$m); 
     print "<tr><td>$hour:$minute</td></tr>"; 
     $m += 15; 
    } 
    $m = 0; 
    $h++; 
} 
?> 
相关问题