PHP比较两个日期,但小时数不正常

时间:2013-04-23 03:56:27

标签: php date

我的代码问题没有显示日期之间的正确差异。 Days Minutes和Seconds都正常工作,但是如果有意义的话,小时数似乎显示为减去的数量而不是余数。

例如,使用这些日期 2171167 = 2013-05-18 00:00:00 - 2013-04-22 20:53:53

我收到以下输出 25天19:06:07

$date_one = date('Y-m-d H:i:s');
$date_two = date('Y-m-d H:i:s', mktime(0, 0, 0, 5, 18, 2013));
$Difference = abs(strtotime($date_two) - strtotime($date_one));

$Days = date("d", $Difference);
//$Hours = date("H", $Difference); Why does this NOT WORK???
$Minutes = date("i", $Difference);
$Seconds = date("s", $Difference);

如果你能告诉我为什么我注释掉的第二个“小时”变量不起作用我会非常感激。

3 个答案:

答案 0 :(得分:3)

<?php
header('Content-Type: text/plain');

$date1 = DateTime::createFromFormat('Y-m-d H:i:s', '2013-05-18 00:00:00');
$date2 = DateTime::createFromFormat('Y-m-d H:i:s', '2013-04-22 20:53:53');

$result = $date1->diff($date2);

echo $result->format('%Y-%m-%d %H:%i:%s');
?>

节目:

00-0-25 03:6:7

分成变量:

list($year, $month, $day, $hour, $minute, $second) = explode('-', $result->format('%Y-%m-%d-%H-%i-%s'));

var_dump($year, $month, $day, $hour, $minute, $second);

节目:

string(2) "00"
string(1) "0"
string(2) "25"
string(2) "03"
string(1) "6"
string(1) "7"

答案 1 :(得分:0)

只需更改小时语法。

<?php
    $date_one = date('Y-m-d H:i:s');
    $date_two = date('Y-m-d H:i:s', mktime(0, 0, 0, 5, 18, 2013));
    $Difference = round(strtotime($date_two) - strtotime($date_one));

    $Days = date("d", $Difference);
    $Hours = date("H", $Difference);
    echo $Hours = $Difference / 60;
    $Minutes = date("i", $Difference);
    $Seconds = date("s", $Difference);
?>

答案 2 :(得分:0)

您使用错误的第一次约会使用以下代码作为您的实际答案

$date_one = "2013-04-22 20:53:53"; //date('Y-m-d H:i:s');
$date_two = date('Y-m-d H:i:s', mktime(0, 0, 0, 5, 18, 2013));
$Difference = abs(strtotime($date_two) - strtotime($date_one));

echo "<br> dif ->".date('d H:i:s',$Difference);

echo "<br> day -> ".$Days = date("d", $Difference);
echo "<br> Hours -> ".$Hours = date("H", $Difference); 
echo "<br> Minutes -> ".$Minutes = date("i", $Difference);
echo "<br> Seconds -> ".$Seconds = date("s", $Difference);

<强>:输出:

dif - > 26 03:06:07

day -> 26
Hours -> 03
Minutes -> 06
Seconds -> 07