首页 > 解决方案 > PHP DateTime 与时区的小时差给出 0 而不是 2

问题描述

我正在尝试建立一个时区列表,其中包含 php 时区代码和 UTC 之间的时差。

我尝试了几行带有差异的代码:

$utc_date = new DateTime(
    NULL,
    new DateTimeZone('UTC')
);
echo 'UTC:  ' . $utc_date->format('Y-m-d g:i A') . "<br>";

$cairo_date = new DateTime(
    NULL,
    new DateTimeZone('Africa/Cairo')
);
echo 'Cairo:  ' . $cairo_date->format('Y-m-d g:i A') . "<br>";

$diff = $utc_date->diff($cairo_date);
echo "Differences: " . $diff->h;

它输出:

UTC: 2020-05-17 9:14 PM
Cairo: 2020-05-17 11:14 PM
Differences: 0

我找不到为什么 diff 不返回正确的差异?

标签: phpdatetimedateinterval

解决方案


只有在不同的时区,它已经是相同的时间了。DateTime 构造函数中的第一个参数为空,表示当前时间。

尝试:

//add
$utc_date->modify('+1 hour');

新的输出将是:

UTC:  2020-05-17 11:01 PM
Cairo:  2020-05-18 12:01 AM
Differences: 1

推荐阅读