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

时间:2018-09-04 15:24:41

标签: 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:53 PM(即20:53:00)执行,但相差3小时。不知道为什么吗?

1 个答案:

答案 0 :(得分:2)

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

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

只需使用DateTimeZone('Zone'),它应该将新日期设置为您所在的区域。