Necesito incrementar un valor de fecha en un día en JavaScript.
Por ejemplo, tengo un valor de fecha 2010-09-11 y necesito almacenar la fecha del día siguiente en una variable de JavaScript.
¿Cómo puedo incrementar una fecha por un día?
javascript
date
datetime
Santanu
fuente
fuente
Respuestas:
Tres opciones para ti:
1. Usando solo el
Date
objeto de JavaScript (sin bibliotecas):Mi respuesta anterior para el n. ° 1 fue incorrecta (agregó 24 horas, al no tener en cuenta las transiciones hacia y desde el horario de verano; Clever Human señaló que fallaría con el 7 de noviembre de 2010 en la zona horaria del Este). En cambio, la respuesta de Jigar es la forma correcta de hacer esto sin una biblioteca:
Esto funciona incluso durante el último día de un mes (o año), porque el objeto de fecha de JavaScript es inteligente sobre la renovación:
Mostrar fragmento de código
(Esta respuesta se acepta actualmente, por lo que no puedo eliminarla. Antes de que fuera aceptada, le sugerí al OP que aceptaran Jigar's, pero tal vez aceptaron esta para los artículos # 2 o # 3 en la lista).
2. Usando MomentJS :
(Tenga en cuenta que
add
modifica la instancia a la que la llama, en lugar de devolver una nueva instancia, portoday.add(1, 'days')
lo que modificaríatoday
. Es por eso que comenzamos con una operación de clonaciónvar tomorrow = ...
).3. Usando DateJS , pero no se ha actualizado en mucho tiempo:
fuente
Date
constructor (new Date(year, month, date)
); ver sección 15.9.2.1 de la especificación ; si quieres aceptar una variedad de formatos, definitivamente echa un vistazo a DateJS .Date.parse
(lo que devuelve una cantidad de milisegundos que luego puede alimentarnew Date(ms)
). Pero cuidado, eso puede variar de un navegador a otro. Hasta hace poco, las implementaciones podían hacer casi cualquier cosa que quisieranDate.parse
. La nueva especificación de la quinta edición ahora tiene un formato mínimo que debe aceptarse, pero todavía no contaría con eso.x = new Date(); x2 = new Date(x.getTime() + 1000)
, donde 1000 es un incremento de milisegundos.Date
Los objetos son mutables. Estás almacenando el mismoDate
objeto tres veces en la matriz. Si desea tresDate
objetos diferentes , debe crear tres objetos:var unavailableDates = []; for (var d = new Date('2017-05-11'); d < new Date('2017-05-13'); d.setDate(d.getDate() + 1)) { unavailableDates.push(new Date(+d)); }
fuente
new Date("2009-09-11")
pero Firefox no. Creo que la mayoría de los navegadores aceptan,new Date("2009/09/11")
por lo que sería una solución fácilvar arrivalDate = document.getElementById('arival_date').value; var dayAfter = new Date(arrival_date.replace(/-/g, '/')); dayAfter.setDate(dayAfter.getDate()+1);
.-
con/
y con la esperanza de que los navegadores lo aceptarán, sería dividir la cadena en partes:var dateParts = arrivalDate.split('-'); var y = parseInt(dateParts[0], 10); var m = parseInt(dateParts[1], 10); var d = parseInt(dateParts[2], 10); var dayAfter = new Date(y, m-1, d+1);
Tenga en cuenta que estamos utilizandom-1
aquí, porque meses JavaScript son los valores de enumeración (que enero es 0, no 1), yd+1
porque ya está haciendo el incremento en la asignación inicial (se corregirá automáticamente el 29 de febrero, etc.)Ninguno de los ejemplos en esta respuesta parece funcionar con los días de ajuste del horario de verano. En esos días, el número de horas en un día no es 24 (son 23 o 25, dependiendo de si está "saltando" o "retrocediendo").
La siguiente función AddDays javascript representa el horario de verano:
Estas son las pruebas que utilicé para probar la función:
fuente
La forma más fácil es convertir a milisegundos y agregar 1000 * 60 * 60 * 24 milisegundos, por ejemplo:
fuente
1000*60*60*24
xDaysToBeAdded
new Date(+new Date() + 1000*60*60*24)
pero en realidad es similar agetTime()
/setTime()
, realmente.new Date(Date.now()+1000*60*60*24);
¡Mañana en una línea en JS puro pero es feo !
Aquí está el resultado:
fuente
Primero debe analizar su cadena antes de seguir la sugerencia de otras personas:
Si lo desea nuevamente en el mismo formato, deberá hacerlo "manualmente":
Pero sugiero obtener Date.js como se menciona en otras respuestas, eso te ayudará mucho .
fuente
Siento que nada es más seguro que
.getTime()
y.setTime()
, por lo tanto, este debería ser el mejor y el mejor rendimiento también..setDate()
para una fecha no válida (como 31 + 1) es demasiado peligroso y depende de la implementación del navegador.fuente
Obteniendo los próximos 5 días:
fuente
Dos métodos:
1:
2: similar al método anterior
fuente
Obtenga el valor de cadena de la fecha utilizando el método dateObj.toJSON () Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON Corte la fecha de la devolución valor y luego incremente por la cantidad de días que desee.
fuente
Ejemplo
Resultado
fuente
No estoy completamente seguro si es un ERROR (Probado Firefox 32.0.3 y Chrome 38.0.2125.101), pero el siguiente código fallará en Brasil (-3 GMT):
Resultado:
Agregar una hora a la fecha hará que funcione perfectamente (pero no resuelve el problema).
Resultado:
fuente
Resultados en una representación de cadena de la fecha de mañana. Use la nueva Fecha () para obtener la fecha de hoy, agregue un día usando Date.getDate () y Date.setDate () y convierta el objeto Date en una cadena.
fuente
Incrementando el año de la fecha con vanilla js:
En caso de que alguien quiera incrementar otro valor que no sea la fecha (día)
fuente
A través de JS nativo, para agregar un día, puede hacer lo siguiente:
Otra opción es usar la
moment
biblioteca:fuente
Incremento de fecha de ahorro de zona horaria / horario de verano para fechas de JavaScript:
fuente