Foros del Web » Programando para Internet » PHP »

Función suma días

Estas en el tema de Función suma días en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/09/2009, 02:15
 
Fecha de Ingreso: mayo-2006
Mensajes: 38
Antigüedad: 18 años
Puntos: 1
Función suma días

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
  #2 (permalink)  
Antiguo 16/09/2009, 02:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Función suma días

Pero podrías dar un poco mas de detalles. Ya que puedo entender la pregunta de varias formas. Ejemplo

1. Te refieres a sumar dias y que se muestre en el navegador del usuario cuantos dias hay entre medio.
2. Te refieres a que yo coloque que hoy es 2009-09-16 y quiero que me sume 42 dias y me dé un resultado de cual es ese día.

etc. etc.

Me dejas saber
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 16/09/2009, 02:47
 
Fecha de Ingreso: mayo-2006
Mensajes: 38
Antigüedad: 18 años
Puntos: 1
Respuesta: Función suma días

Me refiero a colocar que hoy es 2009-09-16 y al sumarle 46 días me da la fecha correspondiente teniendo en cuenta si pilla algún 29 de febrero.
  #4 (permalink)  
Antiguo 16/09/2009, 03:19
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Función suma días

Muy sencillo. Usando date y su segundo parámetro. Ejemplo
Código PHP:
Ver original
  1. <?php
  2. $dias = 46;
  3. echo date("Y-m-d", mktime(0,0,0,date("n"),date("j")+$dias,date("Y")));
Tambien en vez de usar mktime puedes usar strtotime.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 16/09/2009 a las 03:30
  #5 (permalink)  
Antiguo 16/09/2009, 03:40
 
Fecha de Ingreso: mayo-2006
Mensajes: 38
Antigüedad: 18 años
Puntos: 1
Respuesta: Función suma días

Qué significan "n" y "j"? Ahí tengo que poner el día y el mes de la fecha desde la que empiezo a sumar?
  #6 (permalink)  
Antiguo 16/09/2009, 03:48
 
Fecha de Ingreso: mayo-2006
Mensajes: 38
Antigüedad: 18 años
Puntos: 1
Respuesta: Función suma días

El date no tiene en cuenta los bisiestos. Ejemplo:

04/11/2002 + 1096 días

Con tu código me sale 04/11/2005 pero debería de salir 03/11/2005 teniendo en cuenta el 29/02/2004.
  #7 (permalink)  
Antiguo 16/09/2009, 04:38
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Función suma días

1096 dias son 3 años y 1 dia. Esto quiere decir que 2002-04-11 + 1096 = 2005-04-11. Esta tomando esa funcion los años bisiesto. Porque esta sumando correctamente 3 años y 1 dia. No puede ser 2005-03-11 porque le estarias quitando un mes completo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 18/09/2009, 01:21
 
Fecha de Ingreso: mayo-2006
Mensajes: 38
Antigüedad: 18 años
Puntos: 1
Respuesta: Función suma días

No estoy quitando un mes, sólamente un día:

04 de noviembre de 2002 + 1096 días = 03 de noviembre de 2005

Sí que me sirve tu función, y lo hace bien. El problema es que yo quería la fecha en la que se suman esos días contando con el primer día, es decir, con el 04. Son días trabajados y ese día también se trabaja así que si al 04 de noviembre de 2002 le sumas un año trabajado(365 días), el día que vence el contrato es el día 03 de noviembre de 2003 y sin embargo la función da el 04 de noviembre de 2003. Lo que quiere decir que la función no tiene en cuenta el día inicial que yo si lo quiero contar.

Por eso me estaba haciendo un poco de lio... pero la solución ha sido restarle un día matemáticamente para que lógicamente me cuente el día inicial.

Muchas gracias!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:05.