Función suma días

Iniciado por Ensy, 16 Septiembre 2009, 10:50 AM

0 Miembros y 1 Visitante están viendo este tema.

Ensy

Hola!!

Estoy intentando hacer una función que sume un número de días determinado a una fecha teniendo en cuenta si pilla bisiestos.

De todas las formas que he probado siempre me falla algo y estoy un poco saturada.

Si alguien tiene alguna y la compartiera conmigo se lo agradecería mucho!! Porque las que he encontrado por internet tampoco funcionan...

Un saludo y muchas gracias!!
Ensy

Spider-Net

Yo suelo usar esta:

Código (php) [Seleccionar]
// Función: suma_dias
// Recibe: una fecha en formato dia-mes-año
// Devuelve: la fecha con el número de días sumado en formato dia-mes-año
function suma_dias($fecha,$ndias){
if (preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha)){
list($dia,$mes,$año)=split("/", $fecha);
}

if (preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha)){
list($dia,$mes,$año)=split("-",$fecha);
}
$nueva=mktime(0,0,0, $mes,$dia,$año) + $ndias * 24 * 60 * 60;
$nuevafecha=date("d-m-Y",$nueva);

return ($nuevafecha); 
}


Funciona bien, aunque creo que alguna vez me dió algún error y creo que fue precisamente por eso, por los años bisiestos...

Ensy

Muchas gracias!!

Esa que me muestras me ha dado errores, hay veces que no lo calcula bien... te paso esta que no me ha dado ningún fallo.

Código (php) [Seleccionar]

function sumarDiasFecha($fecha,$dias)
{
   //Hay que sumarle un dia menos para que me cuente el dia de la fecha
   //desde la que empieza a sumar.
   //Si no se quiere contabilizar ese dia no se resta y listo.
   $dias--;
   //Formato de $fecha 00/00/0000 dia/mes/año
   $dia = substr($fecha,0,2);
   $mes = substr($fecha,3,2);
   $año = substr($fecha,6,4);
   $nfecha = date("Y-m-d", mktime(0,0,0,date($mes),date($dia)+$dias,date($año)));
   //Devuelve formato 0000-00-00 asi que lo cambio al formato para mostrar
   $año = substr($nfecha,0,4);
   $mes = substr($nfecha,5,2);
   $dia = substr($nfecha,8,2);
   $nfecha = "$dia/$mes/$año";
   return $nfecha;
}


Saludos!!

Spider-Net

Perfecto, pues muchas gracias a ti porque al final me has ayudado tú a mí en lugar de yo a ti  ;D

Un saludo y gracias.