简体   繁体   English

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

[英]PHP Comparing two dates but Hours not functioning correctly

I'm having an issue with my code not displaying the correct difference between dates. 我的代码没有显示日期之间的正确差异。 The Days Minutes and Seconds all work correctly but the Hours seem to be displayed the subtracted amount and not the remainder if that makes sense at all. Days Minutes和Seconds都正常工作,但是如果完全有意义的话,小时似乎显示减去的数量而不是余数。

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

I receive the following output 25 days 19:06:07 我收到以下输出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);

If you could please tell me why the second "Hours" variable i have commented out is not working i would very much appreciate it. 如果你能告诉我为什么我所评论的第二个“小时”变量不起作用我会非常感激。

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

Shows: 显示:

00-0-25 03:6:7

To split into variables: 要拆分成变量:

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

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

Shows: 显示:

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

Just change the hours syntax. 只需更改小时语法即可。

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

you are using wrong first date use below code to your actual answer 您使用错误的第一次约会使用下面的代码到您的实际答案

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

:OUTPUT: :OUTPUT:

dif -> 26 03:06:07 dif - > 26 03:06:07

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM