环境: 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中设置默认时区,但无济于事。
使用“ date”和“ date -u”给我正确的时间。
timedatectl给我以下输出: 当地时间:Sa 2019-12-21 22:06:49 CEST 世界标准时间:萨2019年12月21日21:06:49 UTC 时区:欧洲/柏林(CET,+ 0100)
也许其他人知道这里发生了什么。
答案 0 :(得分:0)