PHP - Como sumar meses a una fecha

 
Vista:

Como sumar meses a una fecha

Publicado por Salvador (1 intervención) el 15/11/2007 04:27:55
Hola a todos, antes que nada agradezco la ayuda, tengo un proyecto en el que tengo que generar unos recibos de pago, pero parto de que por ejemplo el contrato inicia el 10/01/2008 y cada día 10 vencerá el siguiente recibo... el vendedor captura la fecha de inicio y dice q se generarán recibos de forma MENSUAL, BIMESTRAL, TRIMESTRAL... ANUAL.. pero las fechas que se imprimirán en los recibos son todos los días 10 de cada mes en donde corresponda... mi pregunta es... ¿como le hago para ir sumando meses a una fecha inicial?

es decir el vendedor pone 2008-01-10 ( FORMA SEMESTRAL ) y 5 periodos... los recibos deberán de tener fechas de vencimiento:

2008-07-10
2009-01-10....

como hago eso? tengo que sumarle 7 meses ... pero sin modificar el día.. como?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como sumar meses a una fecha

Publicado por Diego Romero (1450 intervenciones) el 15/11/2007 06:57:29
Pues si tienes que generar, digamos, 5 fechas susesivas mes a mes, nada más suma los meses de a uno, si el mes pasa de 12 suma uno al año y regresa a 1 el mes.

algo así:

$periodos = 5
$dia = 10;
$mes = 10;
$ano = 2007;
for ($i=1; $i<=$periodos; $i++) {
$mes++;
if ($mes > 12) {
$mes = 1;
$ano++;
}
echo $dia."/".$mes."/".$ano;
}

En vez de echo, podrías asignar a un array para que te queden guardadas las fechas generadas de alguna manera:

$fechasvencimiento[$i] = $dia."/".$mes."/".$ano;

O si quieres cada parte de la fecha por separado:

$fechasvencimiento[$i] = Array('dia' => $dia, 'mes' => $mes, 'ano' => $ano);

Así por ejemplo, el día del cuarto vencimiento será:

$fechavencimiento[4]['dia']

(no te fies mucho de la sintaxis, estoy escribiendo de memoria :P)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como sumar meses a una fecha

Publicado por Aybar Ronald (1 intervención) el 22/02/2008 04:25:58
Buenos Noches caballero tengo justo el codigo que quieres creo te lo doy para ver si te sirve ok. Si ves alguna forma de disminuir la linea de codigo para mejor resultado no dejes en decirmelo.

function Sumar_Mes($fecha,$nmes=""){
list($dia,$mes,$anyo)=explode("/",$fecha);
$end_mes=array("01"=>"31","02"=>"28","03"=>"31","04"=>"30","05"=>"31","06"=>"30","07"=>"31","08"=>"31","09"=>"30","10"=>"31","11"=>"30","12"=>"31");
checkdate($mes,$dia,$anyo) or die("<div style="font-family:Arial"><strong>Error:</strong> Fecha Invalida! ".$fecha."</div>");
$tmpanio=floor($nmes/12);
$tmpmes=$nmes%12;
$anyo+=$tmpanio;
$mesnew=$mes+$tmpmes;
$mes_cobro=($mesnew<10)?"0".($mesnew):($mesnew);
if($mes_cobro=="02")
$end_mes["02"]=(IsBisiesto($anyo))?"29":"28";
if($dia<=$end_mes[$mes_cobro])
$fec_cobro=$dia."/".$mes_cobro."/".$anyo;
else
$fec_cobro=$end_mes[$mes_cobro]."/".$mes_cobro."/".$anyo;
echo $fec_cobro."</br>";
}
function IsBisiesto($Year){
$value=(($Year%4==0) && ($Year%100!=0) || ($Year%400==0) )?true:false;
return $value;
}
$dia_eval="29/01/2000";
echo "Dia de ingreso: ".$dia_eval."</br>";
for($i=1;$i<=26;$i++)
Sumar_Mes($dia_eval,$i);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar