Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Ensy en 16 Septiembre 2009, 10:50 AM

Título: Función suma días
Publicado por: Ensy en 16 Septiembre 2009, 10:50 AM
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
Título: Re: Función suma días
Publicado por: Spider-Net en 16 Septiembre 2009, 17:59 PM
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...
Título: Re: Función suma días
Publicado por: Ensy en 18 Septiembre 2009, 10:16 AM
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!!
Título: Re: Función suma días
Publicado por: Spider-Net en 22 Septiembre 2009, 12:24 PM
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.