有人可以向我解释为什么从 DateTime 对象中添加和减去相同的 DateInterval 会导致不同的日期吗?看看时间:当我减去间隔时它从 20:00 到 19:00,但是当我添加间隔时它仍然是 19:00。
$date = new DateTime("2015-04-21 20:00", new DateTimeZone('Europe/Berlin'));
$days = 28;
$minutes = $days * 24 * 60;
$interval = new DateInterval("PT{$minutes}M");
var_dump($date);
$date->sub($interval);
var_dump($date);
$date->add($interval);
var_dump($date);
结果是:
object(DateTime)#1 (3) {
["date"]=>
string(26) "2015-04-21 20:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
object(DateTime)#1 (3) {
["date"]=>
string(26) "2015-03-24 19:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
object(DateTime)#1 (3) {
["date"]=>
string(26) "2015-04-21 19:00:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
在我看来,$date->sub($interval);
由于夏令时差异(它与其他日期如预期的那样工作,即 2015-05-21 20:00),将小时从 20:00 更改为 19:00,但$date->add($interval);
不适用 DTS。这可能是一个错误吗?