日期没有正确格式化PHP时间

时间:2014-03-20 07:19:11

标签: php

您好我尝试将两个日期之间的差异显示出来。

我的问题是我得到的时差不正确。

这是我的代码:

$time1 = strtotime('2014-03-28 15:20:00');
    $time2 = strtotime('2014-03-28 15:15:00');

    $diffTime = $time1 - $time2;

    echo date('H:i', $diffTime);

我得到的结果是:

02:05

当前时间应为:

00:05

我猜这个日期不知何故需要时区或类似的东西,但我不确定。

感谢。

5 个答案:

答案 0 :(得分:2)

/****************************************
$start_date = new DateTime('23:58:40'); *These two still give 
$end_date = new DateTime('00:00:00');   *a wrong answer
*****************************************/

$start_date = new DateTime('23:58:40');
$end_date = new DateTime('00:11:36');

$dd = date_diff($end_date, $start_date);

//Giving a wrong answer: Hours = 23, Minutes = 47, Seconds = 4 
echo "Hours = $dd->h, Minutes = $dd->i, Seconds = $dd->s";

答案 1 :(得分:1)

所以你在这里实际做的是生成两个UNIX时间戳(数字)然后减去它们。然后你将结果数传递给date(),好像它仍然是$diffTime的时间戳。

基本上{{1}}是两次之间的秒数。你可以除以60得到分钟,依此类推,但是PHP的DateTime对象要好得多。

答案 2 :(得分:0)

来自PHP文档:

http://pl1.php.net/strtotime

  

注意:   不建议使用此函数进行数学运算。最好在PHP 5.3及更高版本中使用DateTime :: add()和DateTime :: sub(),或在PHP 5.2中使用DateTime :: modify()。

答案 3 :(得分:0)

试试这个

<?php
$time1 = strtotime('2014-03-28 15:20:00');
$time2 = strtotime('2014-03-28 15:15:00');

echo round(abs($time1 - $time2) / 60,2). " minute"

    ?>

答案 4 :(得分:0)

Below is the solution of date time in years,days.hours,minutes and seconds.

$time1 = strtotime('2014-03-28 15:20:00');
$time2 = strtotime('2014-03-28 15:15:00');

$diffTime = $time1 - $time2;

$y = ($diffTime/(60*60*24*365));
$d = ($diffTime/(60*60*24))%365;
$h = ($diffTime/(60*60))%24;
$m = ($diffTime/60)%60;
$s = ($diffTime)%60;


echo "Minutes - " .$m;
echo "<br/>";