首页 > 解决方案 > 为什么 PHP DateTime->add(DateInterval) 在夏令时转换失败?

问题描述

我正在使用 php 8。我DateTimeImmutable在时区“欧洲/苏黎世”中有一个对象

$start = new DateTimeImmutable('2021-03-28 01:00', new DateTimeZone("Europe/Zurich")); 
// Europe/Zurich is in UTC+1 during winter, UTC+2 in summer

然后我加1,分别。2小时使用DateInterval

$oneHour = $start->add(new DateInterval('PT1H'));
$twoHour = $start->add(new DateInterval('PT2H'));
echo $oneHour->format('c');
echo $twoHour->format('c');

我的期望:

"2021-03-28T03:00:00+02:00"
"2021-03-28T04:00:00+02:00"

我得到什么:

"2021-03-28T03:00:00+02:00" 
"2021-03-28T03:00:00+02:00" <-- same result!

这是一个php错误吗?为什么会失败?这是预期的行为吗?

标签: phpdatetimedst

解决方案


推荐阅读