我正在尝试使用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小时。不知道为什么吗?
答案 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'),它应该将新日期设置为您所在的区域。