我正在尝试使用名为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。
答案 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);
将第二个时间字段替换为您从数据库中获取的日期时间。