Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Sumar tiempo a una Date

Estas en el tema de Sumar tiempo a una Date en el foro de Javascript en Foros del Web. Hola, Necesito algún método sencillo para sumar horas a un date, he estado buscando desde hace rato, y lo único que he encontrado son largas ...
  #1 (permalink)  
Antiguo 27/01/2014, 18:29
Avatar de ClubIce  
Fecha de Ingreso: diciembre-2008
Mensajes: 216
Antigüedad: 15 años, 3 meses
Puntos: 2
Sumar tiempo a una Date

Hola,

Necesito algún método sencillo para sumar horas a un date, he estado buscando desde hace rato, y lo único que he encontrado son largas funciones que descomponen el date y lo vuelven a armar, pero son de hace años, y creo que actualmente existe código nativo que hace, eso.

¿Alguien sabe como hacerlo?
  #2 (permalink)  
Antiguo 27/01/2014, 20:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Sumar tiempo a una Date

Para añadir días, meses o años a una fecha dada, suelo hacerlo de esta forma: Convierto la fecha actual y la cantidad de tiempo a añadir en segundos, los sumo y obtengo la nueva fecha, por ejemplo:

Código Javascript:
Ver original
  1. (function(){
  2.     var fecha = new Date(),
  3.         dia = fecha.getDate(),
  4.         mes = fecha.getMonth() + 1,
  5.         anio = fecha.getFullYear(),
  6.         tiempo = prompt("Ingrese la cantidad de días a añadir"),
  7.         addTime = tiempo * 86400; //Tiempo en segundos
  8.  
  9.     fecha.setSeconds(addTime); //Añado el tiempo
  10.  
  11.     document.body.innerHTML = "Fecha actual: " + dia + "/" + mes + "/" + anio + "<br />";
  12.     document.body.innerHTML += "Tiempo añadido: " + tiempo + " días<br />";
  13.     document.body.innerHTML += "Fecha final: " + fecha.getDate() + "/" + (fecha.getMonth() + 1) + "/" + fecha.getFullYear();
  14. })();

Creo un objeto Date y de él, tomo la fecha, mes y año, que será la fecha actual ya que no le he dado parámetros al objeto. Luego, le pido al usuario que ingrese la cantidad de días a añadir a la fecha actual, transformo dicha cantidad a segundos, multiplicándola por la cantidad de segundos que hay en un día, con el método setSeconds, adiciono los segundos de los días que quiero añadir a la fecha actual. Finalmente, imprimo los datos. Podrás notar que a los meses les sumo 1, esto es porque el objeto los toma desde 0 hasta 11, como en los arrays.

El resultado se ve así, ingresando 8 días:
Código HTML:
Ver original
  1. Fecha actual: 27/1/2014
  2. Tiempo añadido: 8 días
  3. Fecha final: 4/2/2014

Esto te puede dar una idea de cómo puedes elaborar lo que quieres, ya que la clave está en sumar el tiempo en segundos a la fecha, saludos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 28/01/2014, 02:13
Avatar de replica  
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 19 años, 5 meses
Puntos: 2
Respuesta: Sumar tiempo a una Date

No, mucho más fácil:
Código Javascript:
Ver original
  1. var fecha = new Date();
  2.     fecha.setHours(fecha.getHours()+1);

Declarar la variable fecha de esta manera te crea un objeto con un montón de métodos, y si lees fecha con un alert te dará el día de la semana, el mes, día del mes, la hora, minutos y segundos en el que se ejecuta el new Date.

Si quieres sumar días, pues:

fecha.setDate(fecha.getDate()+1);

Si al día 31 le sumas 1, te da el día 1 del mes siguiente, teniendo en cuenta si el año es bisiesto, o si es final de año, lo que sea.

Una gozada el objeto Date.

http://www.w3schools.com/jsref/jsref_obj_date.asp
  #4 (permalink)  
Antiguo 28/01/2014, 12:34
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Sumar tiempo a una Date

Es muy similar a lo que propuse, con la diferencia de que ya no es necesario convertir el tiempo en segundos para adicionarlo. No he trabajado mucho con estos métodos, justo estuve leyendo sobre éstos para ayudar a ClubIce, pero creo que me faltó leer más, estoy más acostumbrado a trabajar del lado del servidor y pues más o menos como lo expliqué es como se realizaría en PHP con las funciones date y mktime.

Buen aporte.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 28/01/2014, 18:50
Avatar de ClubIce  
Fecha de Ingreso: diciembre-2008
Mensajes: 216
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Sumar tiempo a una Date

Cita:
Iniciado por replica Ver Mensaje
No, mucho más fácil:
Código Javascript:
Ver original
  1. var fecha = new Date();
  2.     fecha.setHours(fecha.getHours()+1);

Declarar la variable fecha de esta manera te crea un objeto con un montón de métodos, y si lees fecha con un alert te dará el día de la semana, el mes, día del mes, la hora, minutos y segundos en el que se ejecuta el new Date.

Si quieres sumar días, pues:

fecha.setDate(fecha.getDate()+1);

Si al día 31 le sumas 1, te da el día 1 del mes siguiente, teniendo en cuenta si el año es bisiesto, o si es final de año, lo que sea.

Una gozada el objeto Date.

http://www.w3schools.com/jsref/jsref_obj_date.asp
Lo implemente de esta manera, es mas sencilla, aunque hubiera preferido un metodo en el que no tubiera que declarar una variable.
  #6 (permalink)  
Antiguo 29/01/2014, 00:27
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Sumar tiempo a una Date

Si no quieres declarar variables, puedes añadir un nuevo método para el objeto Date que realice la suma, utilizando para esto la propiedad prototype.

Código Javascript:
Ver original
  1. Date.prototype.sumar = function(){
  2.   this.setHours(this.getHours() + 1);
  3.   return this.getHours();
  4. };
  5.  
  6. alert(new Date().sumar());

Como verás, técnicamente no declaro variables y obtengo el mismo resultado.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 29/01/2014, 01:36
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Sumar tiempo a una Date

Hola:

Si al método sumar(), le pasamos el número de horas por parámetros... y devolvemos solo el objeto Date()... (return this);

Luego podemos reescribir el método toString(): Fecha + Hora, y los resultados serán otros:

alert(new Date().sumar(2))

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 29/01/2014, 08:21
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Sumar tiempo a una Date

Tal y como lo dice caricatos, pensaba hacerlo así anoche pero como vi que te gustó la forma de sumar horas de uno en uno que acertadamente te propuso replica, lo dejé así, pero en esencia, puedes enviar un valor como parámetro al método y éste sumarlo como horas al objeto Date.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: date, funcion, tiempo
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 03:37.