PHP DateTime的奇怪问题::添加不添加时间

时间:2012-02-13 06:23:48

标签: php datetime

我已经设法将其缩小为一个可以重现问题的小脚本(尝试使用两种不同的PC,但都使用5.3.6):

<?php
$item = array('monthly_on_the' => 4);
$date = new DateTime();
$date->modify('first day of this month');
print_r($date);
$interval = new DateInterval('P'.$item['monthly_on_the'].'D');
print_r($interval);
$return = $date->add($interval);
if (!$return) die('Bad stuff happened!');
print_r($date);

DateTime Object
(
    [date] => 2012-02-01 17:15:23
    [timezone_type] => 3
    [timezone] => Australia/Sydney
)
DateInterval Object
(
    [y] => 0
    [m] => 0
    [d] => 4
    [h] => 0
    [i] => 0
    [s] => 0
    [invert] => 0
    [days] => 
)
DateTime Object
(
    [date] => 2012-02-01 17:15:23
    [timezone_type] => 3
    [timezone] => Australia/Sydney
)

这是一个错误,如果是这样,它是否已在更新版本的PHP中得到修复?或者在我忽视的东西中有什么奇怪的东西吗?

1 个答案:

答案 0 :(得分:2)

是的,这是一个错误。我在使用PHP 5.3.6时遇到了同样的问题。显然它已在5.3.7中修复。请参阅更改日志:

http://www.php.net/ChangeLog-5.php#5.3.7

错误报告:

https://bugs.php.net/bug.php?id=54340

解决方法(如果无法升级):

$date->setTimestamp(strtotime('first day of this month', $date->getTimestamp()));