Foro de elhacker.net

Programación => 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
  1. // Función: suma_dias
  2. // Recibe: una fecha en formato dia-mes-año
  3. // Devuelve: la fecha con el número de días sumado en formato dia-mes-año
  4. function suma_dias($fecha,$ndias){
  5. if (preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha)){
  6. list($dia,$mes,$año)=split("/", $fecha);
  7. }
  8.  
  9. if (preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha)){
  10. list($dia,$mes,$año)=split("-",$fecha);
  11. }
  12. $nueva=mktime(0,0,0, $mes,$dia,$año) + $ndias * 24 * 60 * 60;
  13. $nuevafecha=date("d-m-Y",$nueva);
  14.  
  15. return ($nuevafecha);  
  16. }

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
  1. function sumarDiasFecha($fecha,$dias)
  2. {
  3.   //Hay que sumarle un dia menos para que me cuente el dia de la fecha
  4.   //desde la que empieza a sumar.
  5.   //Si no se quiere contabilizar ese dia no se resta y listo.
  6.   $dias--;
  7.   //Formato de $fecha 00/00/0000 dia/mes/año
  8.   $dia = substr($fecha,0,2);
  9.   $mes = substr($fecha,3,2);
  10.   $año = substr($fecha,6,4);
  11.   $nfecha = date("Y-m-d", mktime(0,0,0,date($mes),date($dia)+$dias,date($año)));
  12.   //Devuelve formato 0000-00-00 asi que lo cambio al formato para mostrar
  13.   $año = substr($nfecha,0,4);
  14.   $mes = substr($nfecha,5,2);
  15.   $dia = substr($nfecha,8,2);
  16.   $nfecha = "$dia/$mes/$año";
  17.   return $nfecha;
  18. }
  19.  

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.