Ver Mensaje Individual
  #6 (permalink)  
Antiguo 20/01/2013, 17:36
rbczgz
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Problema con Funcion de sumar fechas

Cita:
Iniciado por Nemutagk Ver Mensaje
mmm en vez de estar sumando como si fueran simples números porque no usas las funciones de PHP para manejar fechas...

Código PHP:
Ver original
  1. $fecha = '2012-02-18 00:00:00';
  2. echo date('d/m/Y H:i:s',  strtotime($fecha.' +20 month');
Hola a todos,

Ya sé que es reabrir un tema antiguo, pero está totalmente relacionado con el asunto que vengo a consultar, que es lo siguiente:

Según el código de Nemutagk, las sumas son de meses de 30 días, independientemente de si es bisiesto, si es enero (31) o es abril (30).

Bien, aquí viene el problema que yo tengo... Lo que necesito es poder sumar un período de tiempo, sean días, meses o años, pero teniendo en cuenta la duración de los meses involucrados en la operación, es decir, si por ejemplo a la fecha 31/12/2012 le sumo 2 meses, el resultado debería ser 28/02/2013, no 03/03/2013 como resulta de todas las pruebas que he estado haciendo, prácticamente todas con mktime, strtotime y DateTime.

Agradecería mucho una ayuda para ver por donde puedo tirar, porque ahora mismo, no tengo ni idea...

Estas dos opciones son las que mas me han roto la cabeza, por lo que he mencionado antes, con DateTime no he podido hacer nada porque me tira un error de que no encuentra la clase:

Mediante una función:

Código PHP:
Ver original
  1. function add_fecha($fecha_dada,$mes) {
  2. list($diai,$mesi,$anioi) = explode('/',$fecha_dada);
  3. $fecha_final = date('d/m/Y', mktime(0,0,0, $mesi+$mes, $diai, $anioi));
  4. return $fecha_final;
  5. }
  6.  
  7. echo "Fecha final (31/12/2012 + 2 meses): ". add_fecha('31/12/2012',2);

Con esta me suma 3 días más, es decir, sale 03/03/2013

Y esta, que es directamente con strtotime:

Código PHP:
Ver original
  1. $fecha = '2011-12-31';
  2. echo "Fecha final (31/12/2012 + 2 meses): ". date('d/m/Y',  strtotime($fecha.' +2 month') );

Y con esta me suma 2 días más, es decir, sale 02/03/2013

Espero que alguien me pueda echar un cable...

.