【问题标题】:elapsed time from database从数据库经过的时间
【发布时间】:2014-04-20 16:34:26
【问题描述】:

我正在尝试使用名为 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。

【问题讨论】:

  • 我应该补充一点,数据库是 mysql,以防万一,我正在使用 zen-cart。
  • 欢迎来到 Stack Overflow。启用error reporting 在这个函数之后得到一个错误而不是nothing

标签: php mysql elapsedtime


【解决方案1】:
     $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);

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

【讨论】:

  • 这几乎让我成功了! $dt = date('Y-m-d H:i:s');回声 $dt."
    "; $difference = strtotime($dt) - strtotime($order->info['date_purchased']); // 以分钟为单位获取差异 $difference_in_minutes = $difference / 60; echo $difference_in_minutes."分钟";我能够输入 X.XXXX 分钟我想回显 h:m:s 格式
  • 我应该改变 $difference_in_hours." hours";与 echo $difference->format( '%H:%I:%S' );抱歉,我不知道如何将代码放入代码包装器中
  • 如果有用,请标记答案:)
【解决方案2】:

我对 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";

【讨论】:

  • 很遗憾,这不起作用。有没有办法将刺痛转化为物体?我发现许多搜索结果将对象转换为字符串,但没有将字符串转换为对象。也许有一种方法可以用刺痛来做一个经过的计时器?
  • 您当然可以从字符串here is the __construct documentation 创建一个DateTime 对象。 $order-&gt;info['date_purchased'] 是什么格式和类型(您可以尝试var_dump($order); 来查看此信息)?你有错误信息吗?
猜你喜欢
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
相关资源
最近更新 更多