
Creo que esto funcionaría, no lo he probado 100% pero al parecer funciona:
Código PHP:
Ver originalfunction masxmeses3($fecha, $meses) {
$fe_i = mktime(0, 0, 0, $f[1], $f[0], $f[2]); $masxmeses = mktime(0, 0, 0, $f[1]+$meses, $f[0], $f[2]);
if (date('j', $fe_i) != date('j', $masxmeses)) { return date('t-m-Y', mktime(0, 0, 0, $f[1]+$meses, ($f[0]-date('j', $fe_i))+1, $f[2])); }
return date('d-m-Y', $masxmeses); }
echo masxmeses3('31-12-2012', 2); //28-02-2013
Edito: Así también puede servir con DateTime (Tampoco probado al 100%)
Código PHP:
Ver originalfunction masxmeses4($fecha, $meses, $formato) {
$dt = new DateTime($fecha);
$fe_i = $dt->format('j');
$dt->modify("+$meses month");
$masxmeses = $dt->format('j');
if ($fe_i != $masxmeses) {
return $dt->modify("-$masxmeses days")->format($formato);
}
return $dt->format($formato);
}
echo masxmeses4('31-12-2012', 2, 'd-m-Y'); //28-02-2013
Cualquier cosa avisa y lo seguimos mirando.
Saludos.