You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 8.1 DateTime Diff跨时区计算返回错误结果

跨时区日期差计算出现负数年份问题(PHP 8.1.10及以上版本)

我在计算两个日期的年份差时遇到异常:当其中一个日期为UTC时区,另一个为欧洲/柏林时区时,得到的年份值为负数(示例中得到-30,正确结果应为+29)。该问题仅在PHP 8.1.10及以上版本中出现,有没有人遇到过相同问题?

$startDate = new \DateTimeImmutable('1993-06-05 00:00:00', new \DateTimeZone('UTC'));
$endDate = new \DateTimeImmutable('2023-01-02 00:00:00', new \DateTimeZone('Europe/Berlin'));

var_dump($startDate->diff($endDate));

执行结果:

object(DateInterval)#3 (16) {
  ["y"]=>
  int(-30)
}

内容的提问来源于stack exchange,提问作者marcodl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:01:00