PHP - 具有日期/时间的操作

时间:2016-11-04 09:27:57

标签: php

我正在尝试使用日期/时间的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;

?>

运行后,显示:

enter image description here

请你能帮帮我吗?

8 个答案:

答案 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);

?>