为什么时间减法在回显后返回1而不是0

时间:2015-05-21 08:17:06

标签: php codeigniter

我在我看来有这张表

  duty   |  exact   |  undertime
12:00:00 | 12:00:00 | 01:00:00

承诺是$hour = $duty - $exact的结果,当我

echo date("H:i:s",$hour);

它回应01:00:00,我期待00:00:00为此。我错过了什么?

这是我的代码,我使用foreach,因为职责和精确数据来自我的数据库查询。

<?php foreach($unique_date as $unique_dates):?>  
                <tr>
                  <td align="center" colspan="2">
                      <?php echo date($unique_dates['dtr_date']);?>
                  </td>
                  <td align="center" colspan="2">
                      <?php $timediffs = $unique_dates['timediffs'];
                            echo $timediffs;
                      ?>
                  </td>
                  <td align="center" colspan="2">
                      <?php $exact_total_sched = $unique_dates['exact_total_sched'];
                            echo $exact_total_sched;
                      ?>
                  </td>
                  <?php                         
                        $duty = strtotime($timediffs);
                        $exact = strtotime($exact_total_sched);
                  ?>
                  <?php
                        if($duty < $exact)
                        {
                          echo "<td align=\"center\" colspan=\"2\">";
                                #UNDERTIME  
                                $hour1 = $exact-$duty;
                                echo date("H:i:s",$hour1);
                          echo "</td>";
                          echo "<td align=\"center\" colspan=\"2\">";
                          echo date("00:00:00");
                          echo "</td>";
                        }
                     else if($duty > $exact)
                       {
                          echo "<td align=\"center\" colspan=\"2\">";
                           echo date("00:00:00");
                          echo "</td>";
                          echo "<td align=\"center\" colspan=\"2\">";
                                #OVERTIME
                                $hour2 = $duty-$exact;
                               echo date("H:i:s",$hour2);
                          echo "</td>";
                       }
                      else if($duty == $exact)
                       {
                          echo "<td align=\"center\" colspan=\"2\">";
                                $hour3 = $duty-$exact;
                          echo date("H:i:s",$hour3);
                          echo "</td>";
                          echo "<td align=\"center\" colspan=\"2\">";
                          echo date("00:00:00");
                          echo "</td>";
                       }
                      ?> 
                </tr>

              <?php endforeach ?>   

2 个答案:

答案 0 :(得分:1)

$duty=date_create("12:00:00");
$exact=date_create("12:00:00");
$diff=date_diff($duty,$exact);
echo $diff->format("%H:%i:%s");die;

答案 1 :(得分:0)

您可以将DateTime功能与date_diff一起用作

$date1=new DateTime("12:00:00");
$date2=new DateTime("12:00:00");
$diff = date_diff($date2,$date1);
echo $diff->format('%H:%i:%s');