PHP - 使用 DateTime 对象时小时差异不准确



我试图使用 PHP DateTime 对象获取两个日期之间的小时差异,但结果不准确。一个日期是当前日期时间,第二个是来自数据库的事件日期。我不明白小时差是根据什么逻辑计算的。

这是我的代码:

<?php
$date1 = new DateTime();
$date2 = new DateTime("2018-09-04 20:37:06");
$interval = $date2->diff($date1);
echo "<pre>";
print_r($interval);
echo "</pre>";
echo $interval->format('%a Day and %h hours');
?>

输出:

DateInterval Object
(
[y] => 0
[m] => 0
[d] => 0
[h] => 3
[i] => 14
[s] => 13
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
[invert] => 1
[days] => 0
[special_type] => 0
[special_amount] => 0
[have_weekday_relative] => 0
[have_special_relative] => 0
)
0 Day and 3 hours 

脚本在 08:53PM(印度(即 20:53:00 执行,但相差 3 小时。不知道为什么?

对于印度时间,这应该会有所帮助:-

<?php
$timezone = new DateTimeZone('Asia/Kolkata');
$date1 = new DateTime('now', $timezone);
$date2 = new DateTime("2018-09-04 20:37:06", $timezone);
$interval = $date2->diff($date1);
echo "<pre>";
print_r($interval);
echo "</pre>";
echo $interval->format('%a Day and %h hours');
?>

只需使用日期时区("区域"(,它应该将新日期设置为您所在的区域。

最新更新