【问题标题】:How to calculate the time consumed from start time to end time in php如何在php中计算从开始时间到结束时间所消耗的时间
【发布时间】:2013-08-09 15:15:32
【问题描述】:

我想得到完美的时间消耗或从开始时间到结束时间的总时间:
我的代码:

   $start_time =  $this->input->post('start_time');
   $end_time =  $this->input->post('end_time');


   $t1  = strtotime($start_time);
   $t2 = strtotime($end_time);
   $differenceInSeconds = $t2 - $t1;
   $differenceInHours = $differenceInSeconds / 3600;

   if($differenceInHours<0) {
     $differenceInHours += 24; 
    }

在上面的代码中,如果$start_time = 11:00:00 PM$end_date =11:30:00 它给了我0.5 的输出而不是30minutes。有没有合适的方法来做到这一点?
所以如果:

  $start_time  = '01:00:00 PM';
  $end_time = '01:25:00 PM';

  $total = '25:00'; // 25 minutes

或:

  $start_time  = '11:00:00 PM';
  $end_time = '11:00:25 PM';

  $total = '00:00:25'; // 25seconds

问候!

【问题讨论】:

    标签: php datetime time format


    【解决方案1】:

    尝试使用diff

    echo date_create('01:00:00 PM')->diff(date_create('01:25:00 PM'))->format('%H:%i:%s');
    

    【讨论】:

      【解决方案2】:

      您可以使用strtotime() 进行时间计算。这是一个例子:

      $start_time = strtotime('09:00:59');
      $end_time = strtotime('09:01:00');
      $diff = $start_time - $end_time;
      echo 'Time 1: '.date('H:i:s', $start_time).'<br>';
      echo 'Time 2: '.date('H:i:s', $end_time).'<br>';
      
      if($diff){
          echo 'Diff: '.date('H:i:s', $diff);
      }else{
          echo 'No Diff.';
      }
      

      输出:

      Time 1: 09:00:59
      Time 2: 09:01:00
      Diff: 00:00:01
      

      【讨论】:

        【解决方案3】:

        您必须使用 if 和 else 语句检查所有内容。 我认为这有帮助。

         $start_time =  "11:00:00";
         $end_time =  "12:30:00";
        
        
          $t1  = strtotime($start_time);
          $t2 = strtotime($end_time);
          $difference = $t2 - $t1;
        
        
          if($difference / 3600 > 0){
             $hour = $difference / 3600;
             $hour = (int)$hour;
        
             $difference = $difference - ($hour * 3600);
        
          }else{
             $hour = "00";
          }
        
          if($difference / 60 > 0){
               $min = $difference / 60;
        
               $difference = $difference - ($min * 60);
        
          }else{
               $min = "00";
          }
          function checkString($str){
                if(strlen($str)==1){
                return "0".$str;
            }
            return $str;
          }
          print_r(checkString($hour).":".checkString($min).":".checkString($difference));
        

        【讨论】:

          【解决方案4】:

          试试diff函数

          <?php
          echo date_create('03:00:00 PM')->diff(date_create('03:25:00 PM'))->format('%H:%i:%s');
          ?>
          

          输出


          00:25:00
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-04-10
            • 1970-01-01
            • 1970-01-01
            • 2010-11-22
            • 1970-01-01
            • 1970-01-01
            • 2021-11-13
            相关资源
            最近更新 更多