您好,我有一个像欧洲/柏林这样的特殊时区,我想在当前日期添加90天。之后,我发现了这个月的最后一天。php datetime/datetimezone substract 2小时而不是1
数据库中的我的日期以UTC保存。这就是为什么我最终必须改变时区。
我的问题是,时区更改从欧洲/柏林和UTC之间的时间减去2小时。当我在修改UTC之前不修改日期时间对象时,它只会减去1小时。有人可以告诉我问题是什么或正确的解决方案吗?
//$timezone = 'Europe/Berlin';
private function getMaxTillDate($timezone)
{
$threemonth = new \DateTime('now', new \DateTimeZone($timezone));
$threemonth->setTime(23, 59, 59);
$threemonth->add(new \DateInterval('P0Y90DT0H0M'));
$maxday = $threemonth->format('t');
$threemonth->setDate($threemonth->format('Y'), $threemonth->format('m'), $maxday);
$threemonth->setTimezone(new \DateTimeZone('UTC'));
return $threemonth;
}
非常感谢您
有夏令时在德国至少半年,即UTC + 2小时。 – Sven
是的,我知道,但它没有描述为什么PHP只减少1小时,如果我没有操纵dateobject之前我改变时区。 –