Итак, у меня есть код, как это следующим образом: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-1 октября 2014 12:00:00 AM "
string (25)" 2-Dec 1, 2014 12:00:00 AM "
string (25)" 1-Dec 1, 2014 12:00:00 AM "
строка (26)" 2- 31 января 2015 г. 12:00:00 «
Вы можете видеть, что во втором цикле (когда $ i = 2) он добавляет 2 месяца к j усть один
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)
}
Вы можете видеть, что нет разницы между датой даты и $ dataBase, только часовым поясом, но когда мы добавляем один месяц к обоим, они реагируют по-другому, $ dateBase добавляется дополнительный месяц
Да, но это, вероятно, проблема часовых поясов, если читать редактирования я сделал на своем посту – Murilo