Cómo agregar días a la corriente Date
usando JavaScript. ¿JavaScript tiene una función integrada como .Net AddDay
?
javascript
date
datetime
time
Ceniza
fuente
fuente
Date.prototype.addDays=function(d){return new Date(this.valueOf()+864E5*d);};
864E5
por alguna razón prefiero escribir24*60*60
en mi código :)Respuesta correcta :
Respuesta incorrecta :
Esta respuesta a veces proporciona el resultado correcto, pero a menudo devuelve el año y mes incorrectos. El único momento en que esta respuesta funciona es cuando la fecha en la que está agregando días tiene el año y mes actual.
Prueba / Ejemplo
Comprueba este JsFiddle
Mostrar fragmento de código
fuente
Tenga cuidado, porque esto puede ser complicado. Al configurar "mañana", solo funciona porque su valor actual coincide con el año y el mes de "hoy". Sin embargo, establecer un número de fecha como "32" normalmente seguirá funcionando bien para pasar al próximo mes.
fuente
var d = new Date(); d.setDate( d.getDate() + 1 );
:?getDate()
devuelve el día de ese año . Luego, llamarsetDate
establece el día en el año actual . Por lo tanto, NO es una buena solución general. La respuesta de @ AnthonyWJones en realidad funciona correctamente.var d = new Date(2015,11,30);d.setDate(d.getDate() + 370)
da 3 de enero de 2017, que cruza 2 años.Mi solución simple es:
Esta solución no tiene problemas con el horario de verano. Además, uno puede agregar / sustituir cualquier compensación por años, meses, días, etc.
Es el código correcto.
fuente
setDate
.Estas respuestas me parecen confusas, prefiero:
getTime () nos da milisegundos desde 1970, y 86400000 es la cantidad de milisegundos en un día. Por lo tanto, ms contiene milisegundos para la fecha deseada.
El uso del constructor de milisegundos da el objeto de fecha deseado.
fuente
new Date(new Date('11/4/2012').getTime() + 86400000)
Tratar
Usar setDate () para agregar una fecha no resolverá su problema, intente agregar algunos días a un mes de febrero, si intenta agregarle nuevos días, no dará como resultado lo que esperaba.
fuente
setDate()
? ¿Es esto: stackoverflow.com/questions/5497637/…Acabo de pasar años tratando de averiguar cuál era el acuerdo con el año sin agregar cuando seguimos los ejemplos principales a continuación.
Si desea simplemente agregar n días a la fecha que tiene, es mejor que simplemente vaya:
o la versión larga
Esto de hoy / mañana es confuso. Al configurar la fecha actual en su nueva variable de fecha, desordenará el valor del año. Si trabaja desde la fecha original, no lo hará.
fuente
Si puedes, usa moment.js . JavaScript no tiene muy buenos métodos nativos de fecha / hora. El siguiente es un ejemplo de la sintaxis de Moment:
Referencia: http://momentjs.com/docs/#/manipulating/add/
fuente
CodePen
fuente
Creé estas extensiones anoche:
puede pasar valores positivos o negativos;
ejemplo:
fuente
Sin usar la segunda variable, puede reemplazar 7 con sus próximos x días:
fuente
restar 30 días de uso (24h = 86400000ms)
Mostrar fragmento de código
fuente
La solución más simple.
fuente
Gracias Jason por su respuesta que funciona como se esperaba, aquí hay una mezcla de su código y el práctico formato de AnthonyWJones:
fuente
Tarde a la fiesta,
pero si la usas,hay un excelente complemento llamado Momento:jQuery
entonceshttp://momentjs.com/
http://momentjs.com/docs/#/manipulating/
¡Y muchas otras cosas buenas allí!
Editar: referencia de jQuery eliminada gracias al comentario de aikeru
fuente
Una solución diseñada para el operador de la tubería :
Uso:
Si necesita más funcionalidad, le sugiero que busque en la biblioteca de fecha-fns .
fuente
Lo sé, pero a veces me gusta esto:
fuente
Date.prototype.addDays = function(days) {return new Date(this.getTime() + (864e5 * days));};
Tuve problemas con el horario de verano con la solución propuesta.
Al usar
getUTCDate
/ en susetUTCDate
lugar, resolví mi problema.fuente
Puede usar JavaScript, no se requiere jQuery:
fuente
Prototipo genérico sin variables, se aplica a un valor de fecha existente:
fuente
Los documentos de mozilla para setDate () no indican que manejará los escenarios de fin de mes. Ver https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date
Establece la fecha()
Es por eso que uso setTime () cuando necesito agregar días.
fuente
Tan simple como esto:
fuente
Supongo que también daré una respuesta:
personalmente, me gusta intentar evitar la declaración de variables gratuita, las llamadas a métodos y las llamadas a constructores, ya que todos son caros en rendimiento. (dentro de lo razonable, por supuesto)
Iba a dejar esto como un comentario en la Respuesta dada por @AnthonyWJones, pero lo pensé mejor.
Lo anterior respetará el horario de verano. Es decir, si agrega una cantidad de días que cruzan el horario de verano, la hora (hora) mostrada cambiará para reflejar eso.
Ejemplo:
2 de noviembre de 2014 02:00 fue el final del horario de verano.
Si está buscando retener el tiempo durante el horario de verano (por lo tanto, las 10:30 seguirán siendo las 10:30) ...
Entonces, ahora tienes ...
fuente
No, JavaScript no tiene una función integrada, pero puede usar una línea de código simple
fuente
Yo uso algo como:
Funciona con el horario de verano:
Funciona con año nuevo:
Se puede parametrizar:
fuente
Estoy usando la siguiente solución.
Date tiene un constructor que acepta un int. Este argumento representa milisegundos totales antes / después del 1 de enero de 1970. También tiene un método setTime que hace lo mismo sin crear un nuevo objeto Date.
Lo que hacemos aquí es convertir días a milisegundos y agregar este valor al valor proporcionado por getTime. Finalmente, damos el resultado al constructor Date (milisegundos) o al método setTime (milisegundos).
fuente
now.setDate(now.getDate() + days);
maneja automáticamente los cambios de horario de verano. Y tengo que corregir, los segundos bisiestos se ignoran en las marcas de tiempo de JS.Editar: en lugar de
setTime()
(osetHours()
) podría hacerlo de esta manera:Antiguo:
En lugar de usar
setTime()
puedes usarsetHours()
:Ver el JSFiddle ...
fuente
d.setDate(d.getDate() + 1);
Código muy simple para agregar días de fecha en Java Script.
fuente
Hay un método setDate y getDate , que le permite hacer algo como esto:
Si desea restar un número de días y formatear su fecha en un formato legible por humanos, debería considerar crear un
DateHelper
objeto personalizado que se vea así:(ver también este violín )
fuente
Extender el prototipo en JavaScript puede no ser una buena idea , especialmente en bases de código profesionales.
Lo que quieres hacer es extender la
Date
clase nativa :De esta manera, si algún día Javascript implementa un
addDays
método nativo , no romperá nada.fuente