PHP DateTime返回负小时值

时间:2018-10-12 10:09:38

标签: php datetime

我正在尝试解决php DateTime巫婆的问题,在某些特定情况下,我会返回奇怪的值。

例如,我的代码:

$start = new \DateTime("2018-10-04 00:00");
$end = new \DateTime("2018-10-28 23:59");
$diff = $end->diff($start);

返回:

DateInterval {#2311 ▼
  +"y": 0
  +"m": 0
  +"d": 25
  +"h": -1
  +"i": 59
  +"s": 59
  +"f": 0.0
  +"weekday": 0
  +"weekday_behavior": 0
  +"first_last_day_of": 0
  +"invert": 1
  +"days": 24
  +"special_type": 0
  +"special_amount": 0
  +"have_weekday_relative": 0
  +"have_special_relative": 0
}

“ 25天 -1小时 59分钟”。

该功能在大多数情况下均可完美运行。这种情况仅在某些时候发生,但仍然是一个问题...有什么方法可以获取正常的天/小时格式,而无需每次都重新计算此怪异值?

1 个答案:

答案 0 :(得分:0)

感谢阿尔瓦罗,我找到了解决方案:

$start = new \DateTime("2018-10-04 00:00", new \DateTimeZone('UTC'));
$end = new \DateTime("2018-10-28 23:59", new \DateTimeZone('UTC'));
$diff = $end->diff($start);

问题可能出在上述期间我的欧洲/华沙时区和CEST / CET时移。