PHP夏令时错误时区

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

此脚本应打印

3600
7200

但它打印

3600
3600

为什么?据我所知,php支持夏令时。

date_default_timezone_set("Europe/Berlin");

$date1 = new DateTime();
$date1->setDate(2019,1,1); // winter time
$date1->setTime(0,0,0,0);

$date2 = new DateTime();
$date2->setDate(2019,6,1); // summer time
$date2->setTime(0,0,0,0);

$ref = new DateTime("now", new DateTimeZone("UTC"));
echo $date1->getTimeZone()->getOffset($ref);
echo "\n";
echo $date2->getTimeZone()->getOffset($ref);
echo "\n";
php timezone timezone-offset
1个回答
1
投票

您的$ref变量表示“现在”。在echo语句中,您将$ref传递给getOffset,因此它现在就获取当前偏移量。而是传递$date$date2

echo $date1->getTimeZone()->getOffset($date1);
echo "\n";
echo $date2->getTimeZone()->getOffset($date2);
echo "\n";

或更妙的是,直接拨打getOffset()

echo $date1->getOffset();
echo "\n";
echo $date2->getOffset();
echo "\n";
© www.soinside.com 2019 - 2024. All rights reserved.