2012-02-13 57 views
2

我已经成功将这一数字减少到再现这一问题的小脚本(试了两件不同的PC,但都与5.3.6):奇怪的问题与PHP的日期时间::加不加时间

<?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中修复?或者在我忽略的东西中有什么奇怪的东西?

+0

看起来像一个错误 - 在为我工作5.3.9尽管 – Rowlf 2012-02-13 06:45:16

回答

2

是的,这是一个错误。我在使用PHP 5.3.6时遇到了同样的情况。显然它在5.3.7中被修复。看到的changelog:

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())); 
+0

干杯,我试图在他们的bugtracker中找到它,但没有找到任何东西。很高兴看到它被修复。 – 2012-02-13 06:51:15