PHP计算UTC时间错误

问题描述 投票:0回答:1

环境:PHP 7.3.13RC1; CentOS 7.7.1908;服务器时区“欧洲/柏林”

观察:

以下PHP脚本:

$date1=date_create("now");
$date2=date_create("now");
$date3=date_create("now");
$tz1=new DateTimeZone("Europe/Berlin");
$tz2=new DateTimeZone("UTC");
$tz3=new DateTimeZone("GMT");

echo "Current Set Times:","\n";
echo "Date 1: ", $date1->format(DateTime::ATOM), "\n";
echo "Date 2: ", $date2->format(DateTime::ATOM), "\n";
echo "Date 3: ", $date3->format(DateTime::ATOM), "\n";

$date1->setTimezone($tz1);
$date2->setTimezone($tz2);
$date3->setTimezone($tz3);
echo "Times with new Time Zone Set", "\n";
echo "Date 1: ", $date1->format(DateTime::ATOM), "\n";
echo "Date 2: ", $date2->format(DateTime::ATOM), "\n";
echo "Date 3: ", $date3->format(DateTime::ATOM), "\n";

此输出结果:

Current Set Times:
Date 1: 2019-12-21T22:01:00+01:00
Date 2: 2019-12-21T22:01:00+01:00
Date 3: 2019-12-21T22:01:00+01:00
Times with new Time Zone Set
Date 1: 2019-12-21T22:01:00+01:00
Date 2: 2019-12-21T22:01:00+00:00
Date 3: 2019-12-21T21:01:00+00:00

我希望看到以下输出:

Current Set Times:
Date 1: 2019-12-21T22:01:00+01:00
Date 2: 2019-12-21T22:01:00+01:00
Date 3: 2019-12-21T22:01:00+01:00
Times with new Time Zone Set
Date 1: 2019-12-21T22:01:00+01:00
Date 2: 2019-12-21T21:01:00+00:00
Date 3: 2019-12-21T21:01:00+00:00

区别在于第二个日期的输出。与世界标准时间(UTC)的时间相差一小时(22:01:00而不是21:01:00)。

我在这里很茫然。我试图在php.ini中设置默认时区,但无济于事。

使用“日期”和“日期-u”给我正确的时间。

timedatectl给我以下输出:当地时间:Sa 2019-12-21 22:06:49 CEST世界标准时间:萨2019年12月21日21:06:49 UTC时区:欧洲/柏林(CET,+ 0100)

也许其他人知道这里发生了什么。

php datetime utc
1个回答
0
投票

我也无法复制。看here。您的PHP时区可能未正确设置。

将此添加为第一行

date_default_timezone_set("Europe/Berlin");

然后重试。

© www.soinside.com 2019 - 2024. All rights reserved.