从数据库中经过的时间

时间:2014-04-20 16:34:27

标签: php mysql elapsedtime

我正在尝试使用名为order的数据库表中的date_purchased创建一个已用时间。我知道我正在获取date_purchased,因为我可以

<?php echo zen_datetime_short($order->info['date_purchased']); ?>

并获取格式为04/20/2014 11:19:56的日期和时间 我对PHP不好,我刚刚开始学习这个,但是从我研究过的内容我已经尝试了以下内容

<?php
$first  = $order->info['date_purchased'];
$second = new DateTime( 'Y-m-d H:i:s' );
$diff = $first->diff( $second );
?>

然后我做

<?php echo $diff->format( '%H:%I:%S' ); ?>

不幸的是,页面加载直到我的回声,然后它下面应该出现的所有内容都没有。我最好只想在输出上显示分钟和秒钟。

感谢您的帮助。我在我的服务器上使用php 5.3。

2 个答案:

答案 0 :(得分:0)

我对zen-cart不太熟悉,但根据文档,zen_datetime_short似乎将原始字符串作为参数。

我认为这意味着您尝试将字符串用作PHP DateTime对象,这将导致您的脚本失败。您可以尝试修改脚本,将原始时间戳从数据库转换为DateTime对象,如下所示,并查看是否有更好的结果:

$first  = new DateTime($order->info['date_purchased']);
$second = new DateTime();
$diff   = $first->diff($second);

echo $diff->format('%H:%I:%S') . "\n";

答案 1 :(得分:0)

     $dt = date('Y-m-d H:i:s');
     echo $dt."<br>";

     $difference = strtotime($dt) - strtotime("20-04-2014 20:14:30");

    // getting the difference in minutes
     $difference_in_hours = $difference / (60*60);

     echo $difference_in_hours."<br>";

    function sECONDS_TO_DHMS($seconds)
      {

         $days = floor($seconds/86400);
         $hrs = floor($seconds/3600);
         $mins = intval(($seconds / 60) % 60); 
         $sec = intval($seconds % 60);

            if($days>0){
              //echo $days;exit;
              $hrs = str_pad($hrs,2,'0',STR_PAD_LEFT);
              $hours=$hrs-($days*24);
              $return_days = $days." Days ";
              $hrs = str_pad($hours,2,'0',STR_PAD_LEFT);
         }else{
          $return_days="";
          $hrs = str_pad($hrs,2,'0',STR_PAD_LEFT);
         }

         $mins = str_pad($mins,2,'0',STR_PAD_LEFT);
         $sec = str_pad($sec,2,'0',STR_PAD_LEFT);

         return $return_days.$hrs.":".$mins.":".$sec;
      }
      echo sECONDS_TO_DHMS($difference);

将第二个时间字段替换为您从数据库中获取的日期时间。