我正在尝试使用日期/时间的PHP功能。我想做基本的算术运算(加法,减法......)。我已经读到有各种功能可以做到。
我以DateTime和date_diff开头。
<?php
$time1 = new DateTime ('08:10:20');
$time2 = new DateTime ('10:02:30');
$result = date_diff($time1, $time2)->format('H:i:s');
echo $result;
?>
运行后,显示:
请你能帮帮我吗?
答案 0 :(得分:3)
最好的方法是面向对象:
$time1 = DateTime::createFromFormat('H:i:s', '08:10:20');
$time2 = DateTime::createFromFormat('H:i:s', '10:02:30');
$interval = $time1->diff($time2);
echo $interval->format('%H:%i:%s'); // print 01:52:10
我强烈反对使用程序流程:
date_diff($time1, $time2);
尽可能使用面向对象:
$interval = $time1->diff($time2);
我希望它有所帮助
答案 1 :(得分:2)
date_diff
将返回DateInterval
个对象。您可以在格式参数中阅读here可以使用的字符:
$result = date_diff($time1, $time2)->format('%H:%i:%s');
每个格式字符必须以百分号(%)作为前缀。
答案 2 :(得分:1)
您使用的是错误的格式字符串
试
format('H:i:s')
编辑后:
试试这个
<?php
$time1 = new DateTime ('08:10:20');
$time2 = new DateTime ('10:02:30');
$result = date_diff($time1, $time2)->format('%h:%i:%s');
echo $result;
?>
答案 3 :(得分:1)
来自docs:
每个格式字符必须以百分号(%)为前缀
$time1 = new DateTime('08:10:20');
$time2 = new DateTime('10:02:30');
$interval = $time1->diff($time2);
echo $interval->format('%h:%i:%s');
答案 4 :(得分:0)
检查此代码
<?php
$datetime1 = new DateTime('08:10:06')->format('HH:MM:SS');
$datetime2 = new DateTime('08:10:06')->format('HH:MM:SS');
$interval = $datetime1->diff($datetime2);
echo $interval->format('HH:MM:SS');
?>
答案 5 :(得分:0)
试试这个,使用strtotime
$to_time = strtotime("10:02:30");
$from_time = strtotime("08:10:20");
$time_diff = $to_time - $from_time;
echo gmdate('H:i:s', $time_diff);
<强> DEMO 强>
答案 6 :(得分:0)
您好使用此$result = $time2->diff($time1)->format('%h:%i:%s');
或date_diff($time1, $time2)->format('%h:%i:%s');
$time1 = new DateTime ('08:10:20');
$time2 = new DateTime ('10:02:30');
$time1->format('H:i:s');
$time2->format('H:i:s');
$result = $time2->diff($time1)->format('%h:%i:%s');
echo $result;
输出
1:52:10
答案 7 :(得分:0)
使用此代码以秒为单位查找差异。您也可以根据需要使用它来处理日期时间参数。
<?php
function secondsConverter($dateTime1,$dateTime2)
{
$hour=abs($dateTime1['hour']-$dateTime2['hour'])*3600;
$minutes=abs($dateTime1['minute']-$dateTime2['minute'])*60;
$seconds=abs($dateTime1['second']-$dateTime2['second']);
return $hour+$minutes+$seconds;
}
$dateTime1=date_parse("10:00:00.5");
$dateTime2=date_parse("11:00:00.5");
echo secondsConverter($dateTime1,$dateTime2);
?>