2014-10-01 94 views
0

所以,我的代碼,因爲它遵循:Zend_Date的運算addMonth添加更多然後參數

$dateBase = $amount->getDate(); 
for ($i = 1; $i <= 3; $i++) { 
    $installment = new Installment(); 
    if ($i == 1) { 
     //do stuff 
    } else { 
     var_dump('1-'.$dateBase->toString()); 
     $dateBase->addMonth(1); 
     var_dump('2-'.$dateBase->toString()); 
    } 
    $installment->setDate($dateBase); 
    $dataBase = clone $dataBase; 
} 

並且輸出是:
串(25),「1-2014年10月1日12:00:00 AM 「
string(25)」2-Dec 1,2014 12:00:00 AM「
string(25)」1-Dec 1,2014 12:00:00 AM「
string(26)」2-你可以看到在第二個循環中(當$ i = 2時),他增加了2個月intead o ˚F只是一個

EDIT1:Doeing一些更多的研究,我認爲這是時區的錯誤,我改變了代碼,因爲它遵循

$date = new Zend_Date('10/1/2014'); 
var_dump($date); 
$date->addMonth(1); 
var_dump($date, $dateBase); 
$dateBase->addMonth(1); 
var_dump($dateBase); 

,輸出是它如下:

object(Zend_Date)#3754 (8) { 
    ["_locale":"Zend_Date":private]=> 
    string(2) "en" 
    ["_fractional":"Zend_Date":private]=> 
    int(0) 
    ["_precision":"Zend_Date":private]=> 
    int(3) 
    ["_unixTimestamp":"Zend_Date_DateObject":private]=> 
    string(10) "1412114400" 
    ["_timezone":"Zend_Date_DateObject":private]=> 
    string(12) "Europe/Paris" 
    ["_offset":"Zend_Date_DateObject":private]=> 
    int(-3600) 
    ["_syncronised":"Zend_Date_DateObject":private]=> 
    int(0) 
    ["_dst":protected]=> 
    bool(true) 
} 
object(Zend_Date)#3754 (8) { 
    ["_locale":"Zend_Date":private]=> 
    string(2) "en" 
    ["_fractional":"Zend_Date":private]=> 
    int(0) 
    ["_precision":"Zend_Date":private]=> 
    int(3) 
    ["_unixTimestamp":"Zend_Date_DateObject":private]=> 
    int(1414796400) 
    ["_timezone":"Zend_Date_DateObject":private]=> 
    string(12) "Europe/Paris" 
    ["_offset":"Zend_Date_DateObject":private]=> 
    int(-3600) 
    ["_syncronised":"Zend_Date_DateObject":private]=> 
    int(0) 
    ["_dst":protected]=> 
    bool(true) 
} 

object(Zend_Date)#3755 (8) { 
    ["_locale":"Zend_Date":private]=> 
    string(2) "en" 
    ["_fractional":"Zend_Date":private]=> 
    int(0) 
    ["_precision":"Zend_Date":private]=> 
    int(3) 
    ["_unixTimestamp":"Zend_Date_DateObject":private]=> 
    string(10) "1412114400" 
    ["_timezone":"Zend_Date_DateObject":private]=> 
    string(9) "Etc/GMT-2" 
    ["_offset":"Zend_Date_DateObject":private]=> 
    int(-7200) 
    ["_syncronised":"Zend_Date_DateObject":private]=> 
    int(0) 
    ["_dst":protected]=> 
    bool(true) 
} 

object(Zend_Date)#3755 (8) { 
    ["_locale":"Zend_Date":private]=> 
    string(2) "en" 
    ["_fractional":"Zend_Date":private]=> 
    int(0) 
    ["_precision":"Zend_Date":private]=> 
    int(3) 
    ["_unixTimestamp":"Zend_Date_DateObject":private]=> 
    string(10) "1417384800" 
    ["_timezone":"Zend_Date_DateObject":private]=> 
    string(9) "Etc/GMT-2" 
    ["_offset":"Zend_Date_DateObject":private]=> 
    int(-7200) 
    ["_syncronised":"Zend_Date_DateObject":private]=> 
    int(0) 
    ["_dst":protected]=> 
bool(true) 
} 

您可以看到$ date和$ dataBase日期之間沒有區別,只是時區,但是當我們向兩者添加一個月時,它們的反應不同,$ dateBase增加了一個月

回答

0

的Zend Framework 1.12文檔說像這樣的:

例如,當一個人每月新增至1月31日,熟悉SQL的人會想到2月28日作爲結果。另一方面,熟悉Excel和OpenOffice的人會期待3月3日的結果。如果生成的月份沒有在原始日期中設置的日期,則只會出現問題。

看看這個鏈接,如果你不知道這一點:

http://framework.zend.com/manual/1.12/en/zend.date.overview.html

+0

是的,但它可能是一個時區的問題,如果你看過我的崗位上做出了編輯 – Murilo 2014-10-03 18:00:16

相關問題