【问题标题】:get time difference in hours minutes and seconds以小时分钟和秒为单位获取时差
【发布时间】:2014-07-24 14:42:52
【问题描述】:

我有两个约会,

$expiry_time = strtotime('comming from database');
$current_date = strtotime(date('Y-m-d H:i:s'));
$time_diff = ($expiry_time-$current_date)/(3600);

在这里,$time_diff 会给我时间差。例如。 5.67。但是,我想要小时、分钟和秒的格式。我怎样才能做到这一点? 谢谢。

【问题讨论】:

    标签: php date date-math


    【解决方案1】:

    DateTime()DateInterval() 一起使用

    $expiry_time = new DateTime($row['fromdb']);
    $current_date = new DateTime();
    $diff = $expiry_time->diff($current_date);
    echo $diff->format('%H:%I:%S');  // returns difference in hr min and sec
    

    【讨论】:

      【解决方案2】:

      您应该使用 DateTime 类,但如果您使用 PHP 版本早于 5.2,您可以这样做:

      function convert_time_by_seconds($interval) {
          if($interval < 0) {
              return false;
          }
          $seconds_n_miliseconds = explode('.', $interval);
          $interval = $seconds_n_miliseconds[0];
      
          $hours = floor($interval / (60*60));
          $minutes = floor(($interval - ($hours*60*60)) / 60);
          $seconds = floor(($interval - ($hours*60*60)) - ($minutes*60));
          $ms = empty($seconds_n_miliseconds[1]) ? 0 : $seconds_n_miliseconds[1];
          return array('h' => $hours, 'm' => $minutes, 's' => $seconds, 'ms' => $ms);
      }
      
      $time_diff = time() - strtotime('2014-07-17 14:23:51');
      $result = convert_time_by_seconds($time_diff);
      var_dump($result);
      

      【讨论】:

      • 很好的解决方案,最好的一点是结果可以自定义。
      【解决方案3】:

      http://php.net/manual/fr/function.date-diff.php 也有很多有用的东西来做这个操作

      【讨论】:

        【解决方案4】:

        使用 date() 函数。

        $time_diff = $expiry_time - $current_date;
        echo date('H:i:s', $time_diff);
        

        【讨论】:

          猜你喜欢
          • 2013-11-04
          • 1970-01-01
          • 2012-05-24
          • 1970-01-01
          • 2014-10-04
          • 2021-10-05
          • 2018-10-10
          • 1970-01-01
          • 2011-09-12
          相关资源
          最近更新 更多