2012-02-13 28 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