您好我尝试将两个日期之间的差异显示出来。
我的问题是我得到的时差不正确。
这是我的代码:
$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
我猜这个日期不知何故需要时区或类似的东西,但我不确定。
感谢。
答案 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文档:
注意: 不建议使用此函数进行数学运算。最好在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/>";