比较两个日期,但小时不能正常工作


PHP Comparing two dates but Hours not functioning correctly

我有一个问题,我的代码不显示日期之间的正确差异。天、分、秒都可以正常工作,但小时似乎显示的是减去的量,而不是剩余的量,如果这有意义的话。

例如,使用这些日期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);

如果你能告诉我为什么第二个"Hours"变量我已经注释掉了,我将非常感激。

<?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"

你的第一次约会用错了,用下面的代码来回答你的实际答案

$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

只需更改小时的语法。

<?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);
?>