$time1 = time();
$time2 = mktime(date('H')+1, date('i'), date('s'), date('m'), date('d'), date('Y'));
$diff = $time2 - $time1
echo date('Y/m/d H:i:s', $time)."<br/>";
echo date('Y/m/d H:i:s', $new_time)."<br/>";
echo date('H', $diff);
输出:
2013/09/03 09:25:52
2013/09/03 10:25:52
02 //which should be 1
为什么$diff总是与正确答案相差 1?
date()
的第二个参数需要一个时间戳,你给它两个时间戳的差 - 在本例中为 3600。 var_dump(date("Y-m-d H:i:s", 3600));
是"1970-01-01 02:00:00"。
查看DateTime
和DateInterval
类。您的代码等效项如下所示:
$time1 = new 'DateTime();
$time2 = (new 'DateTime())->modify("+1 hour");
$diff = $time1->diff($time2, true);
var_dump($diff->h); // int(1)
你只得到几秒钟的时间。尝试除以3600
echo round($diff/3600); // 1