Tengo el siguiente script que regresa al día siguiente:
function today(i)
{
var today = new Date();
var dd = today.getDate()+1;
var mm = today.getMonth()+1;
var yyyy = today.getFullYear();
today = dd+"https://stackoverflow.com/"+mm+"https://stackoverflow.com/"+yyyy;
return today;
}
Al usar esto:
today.getDate()+1;
Obtengo el siguiente día del mes (por ejemplo, hoy sería 16).
Mi problema es que esto podría ser el último día del mes, y por lo tanto terminar volviendo 32/4/2014
¿Hay alguna manera de obtener la fecha correcta garantizada para el día siguiente?
acarlón
Puedes usar:
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate()+1);
Por ejemplo, dado que hay 30 días en abril, el siguiente código generará el 1 de mayo:
var day = new Date('Apr 30, 2000');
console.log(day); // Apr 30 2000
var nextDay = new Date(day);
nextDay.setDate(day.getDate() + 1);
console.log(nextDay); // May 01 2000
Ver violín.
-
No sé si ayuda en el rendimiento, pero se puede simplificar usando
tomorrow.setDate(tomorrow.getDate() + 1);
–Gustavo Rodrigues
6 de agosto de 2014 a las 14:10
-
Este enfoque no actualizará el mes. Por lo tanto, aún devolverá abril si solicita el mes, en el ejemplo
– marimaf
24/11/2017 a las 22:40
-
@marimaf: este enfoque actualiza el mes. Su ejemplo fue un poco raro porque dependía de que fuera el mismo mes que cuando hizo esta respuesta (acabo de actualizar para arreglar eso), pero el enfoque funciona.
– Bryan Grezeszak
16 de febrero de 2018 a las 8:33
-
gracias.. me ayudo mucho
– kurniawan26
17 de mayo de 2018 a las 3:14
-
Aquí hay un oneliner que funcionó mejor para mis necesidades:
var tomorrow = new Date(new Date().setDate(new Date().getDate() + 1));
–Björn Andreasson
22 de mayo de 2019 a las 7:43
Ruslán F.
Copiado y pegado desde aquí: Incrementando una fecha en JavaScript
Tres opciones para ti:
Usando solo el objeto Date de JavaScript (sin bibliotecas):
var today = new Date(); var tomorrow = new Date(today.getTime() + (24 * 60 * 60 * 1000));
Un trazador de líneas
const tomorrow = new Date(new Date().getTime() + (24 * 60 * 60 * 1000));
O si no le importa cambiar la fecha vigente (en lugar de crear
una nueva fecha):
var dt = new Date(); dt.setTime(dt.getTime() + (24 * 60 * 60 * 1000));
Editar: vea también la respuesta de Jigar y el comentario de David a continuación: var mañana = nueva fecha (); mañana.setDate(mañana.getDate() + 1);
Usando MomentJS:
var today = moment(); var tomorrow = moment(today).add(1, 'days');
(Tenga en cuenta que add modifica la instancia a la que llama, en lugar de devolver una nueva instancia, por lo que today.add(1, ‘days’) modificaría hoy. Es por eso que comenzamos con una operación de clonación en var tomorrow = …. )
Usando DateJS, pero no se ha actualizado en mucho tiempo:
var today = new Date(); // Or Date.today() var tomorrow = today.add(1).day();
-
sería más fácil y mejor cerrar la pregunta como duplicados que c&p respuestas.
– Bergi
15 de abril de 2014 a las 10:44
-
@Bergi, especialmente porque la respuesta ha cambiado desde que se copió …
– Miguel
13 de abril de 2015 a las 19:16
-
¡Esto no funciona para el horario de verano! Prueba esto con
new Date(2016, 10, 6)
– Chet
06/10/2016 a las 20:38
loxxy
El uso del objeto Date lo garantiza. Por ejemplo, si intenta crear April 31st
:
new Date(2014,3,31) // Thu May 01 2014 00:00:00
Tenga en cuenta que está indexado a cero, por lo que Jan. es
0
febrero es1
etc.
-
Tenga en cuenta que los literales numéricos comienzan con “0” es octal y ha quedado obsoleto. Entonces este código puede causar un error en modo estricto. Y, lo que escribiste es 03 en lugar de 04…
– tsh
20 de enero de 2015 a las 4:42
-
@tsh: está indexado a cero. Así que 3 es correcto para abril.
– Bryan Grezeszak
16 de febrero de 2018 a las 8:11
stackoverflow.com/questions/1160827/…
– dikesh
15 de abril de 2014 a las 10:39
¿Hay algún error al optar por un trazador de líneas como
new Date(1000*60*60*24 + +new Date())
?– Midhun KM
15 de marzo de 2018 a las 14:25
@KrIsHnA encantador de una sola línea. ¡sin errores! lo estoy usando como
new Date(86400000 + +new Date())
al procesador de repuesto del costo de la multiplicación. @ToWhomItMayConcern el símbolo más precedido aquí+new Date()
es un operador unario (intenta convertir el operando en un número, si aún no lo está), por si acaso 🙂– Preguntas frecuentes
2 de febrero de 2020 a las 8:54