为什么使用这些方法两次之间的差异总是错误的


why difference between two times always wrong using these methods?

$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"。

查看DateTimeDateInterval类。您的代码等效项如下所示:

$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