tag style change attribute javascript date datetime

style - Incrementando una fecha en JavaScript



title label html (13)

¡Mañana en una línea en JS puro pero es feo !

new Date(new Date().setDate(new Date().getDate() + 1))

Aquí está el resultado:

Thu Oct 12 2017 08:53:30 GMT+0200 (Romance Summer Time)

Necesito incrementar un valor de fecha por 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?


Dos métodos:

1:

var a = new Date() // no_of_days is an integer value var b = new Date(a.setTime(a.getTime() + no_of_days * 86400000)

2: Similar al método anterior

var a = new Date() // no_of_days is an integer value var b = new Date(a.setDate(a.getDate() + no_of_days)


La forma más fácil es convertir a milisegundos y agregar 1000 * 60 * 60 * 24 milisegundos, por ejemplo:

var tomorrow = new Date(today.getTime()+1000*60*60*24);


Ninguno de los ejemplos en esta respuesta parece funcionar con los días de ajuste del horario de verano. En esos días, la cantidad de horas en un día no es de 24 (son 23 o 25, dependiendo de si está "saltando hacia adelante" o "retrocediendo").

La siguiente función de javascript de AddDays representa el horario de verano:

function addDays(date, amount) { var tzOff = date.getTimezoneOffset() * 60 * 1000, t = date.getTime(), d = new Date(), tzOff2; t += (1000 * 60 * 60 * 24) * amount; d.setTime(t); tzOff2 = d.getTimezoneOffset() * 60 * 1000; if (tzOff != tzOff2) { var diff = tzOff2 - tzOff; t += diff; d.setTime(t); } return d; }

Aquí están las pruebas que utilicé para probar la función:

var d = new Date(2010,10,7); var d2 = AddDays(d, 1); document.write(d.toString() + "<br />" + d2.toString()); d = new Date(2010,10,8); d2 = AddDays(d, -1) document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString()); d = new Date(''Sun Mar 27 2011 01:59:00 GMT+0100 (CET)''); d2 = AddDays(d, 1) document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString()); d = new Date(''Sun Mar 28 2011 01:59:00 GMT+0100 (CET)''); d2 = AddDays(d, -1) document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());


No estoy seguro de que sea un ERROR (Tested Firefox 32.0.3 y Chrome 38.0.2125.101), pero el siguiente código fallará en Brasil (-3 GMT):

Date.prototype.shiftDays = function(days){ days = parseInt(days, 10); this.setDate(this.getDate() + days); return this; } $date = new Date(2014, 9, 16,0,1,1); $date.shiftDays(1); console.log($date+""); $date.shiftDays(1); console.log($date+""); $date.shiftDays(1); console.log($date+""); $date.shiftDays(1); console.log($date+"");

Resultado:

Fri Oct 17 2014 00:01:01 GMT-0300 Sat Oct 18 2014 00:01:01 GMT-0300 Sat Oct 18 2014 23:01:01 GMT-0300 Sun Oct 19 2014 23:01:01 GMT-0200

Agregar una hora a la fecha hará que funcione perfectamente (pero no resuelve el problema).

$date = new Date(2014, 9, 16,0,1,1);

Resultado:

Fri Oct 17 2014 01:01:01 GMT-0300 Sat Oct 18 2014 01:01:01 GMT-0300 Sun Oct 19 2014 01:01:01 GMT-0200 Mon Oct 20 2014 01:01:01 GMT-0200



Obteniendo los próximos 5 días:

var date = new Date(), d = date.getDate(), m = date.getMonth(), y = date.getFullYear(); for(i=0; i < 5; i++){ var curdate = new Date(y, m, d+i) console.log(curdate) }


Primero debe analizar su cadena antes de seguir la sugerencia de otras personas:

var dateString = "2010-09-11"; var myDate = new Date(dateString); //add a day to the date myDate.setDate(myDate.getDate() + 1);

Si lo desea de nuevo en el mismo formato, tendrá que hacerlo "manualmente":

var y = myDate.getFullYear(), m = myDate.getMonth() + 1, // january is month 0 in javascript d = myDate.getDate(); var pad = function(val) { var str = val.toString(); return (str.length < 2) ? "0" + str : str}; dateString = [y, pad(m), pad(d)].join("-");

Pero sugiero obtener Date.js como se menciona en otras respuestas, eso te ayudará alot .


Resultados en una cadena de representación 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.

const tomorrow = () => { let t = new Date(); t.setDate(t.getDate() + 1); return `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, ''0'')}-${String( t.getDate() ).padStart(2, ''0'')}`; }; tomorrow();


Tres opciones para ti:

1. Usando solo el objeto Date de JavaScript (sin bibliotecas):

Mi respuesta anterior para el # 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 el 7 de noviembre de 2010 en la zona horaria del este). En cambio, la respuesta de Jigar es la forma correcta de hacerlo sin una biblioteca:

var tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1);

Esto funciona incluso para el último día de un mes (o año), porque el objeto de fecha de JavaScript es inteligente acerca de la transferencia:

var lastDayOf2015 = new Date(2015, 11, 31); snippet.log("Last day of 2015: " + lastDayOf2015.toISOString()); var nextDay = new Date(+lastDayOf2015); var dateValue = nextDay.getDate() + 1; snippet.log("Setting the ''date'' part to " + dateValue); nextDay.setDate(dateValue); snippet.log("Resulting date: " + nextDay.toISOString());

<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

(Esta respuesta se acepta actualmente, por lo que no puedo eliminarla. Antes de aceptarla, sugerí al OP que aceptaran los de Jigar, pero tal vez aceptaron esta para los artículos # 2 o # 3 de la lista).

2. Usando MomentJS :

var today = moment(); var tomorrow = moment(today).add(1, ''days'');

(Tenga en cuenta que add modifica la instancia en la que lo today.add(1, ''days'') , en lugar de devolver una nueva, por lo que today.add(1, ''days'') se modificaría today . Es por eso que comenzamos con una operación de clonación en var tomorrow = ... )

3. Usando DateJS , pero no se ha actualizado en mucho tiempo:

var today = new Date(); // Or Date.today() var tomorrow = today.add(1).day();


const date = moment (). add (14, "days"). toDate () // aquí agregamos 14 días con today


Date.prototype.AddDays = function (days) { days = parseInt(days, 10); return new Date(this.valueOf() + 1000 * 60 * 60 * 24 * days); }

Ejemplo

var dt = new Date(); console.log(dt.AddDays(-30)); console.log(dt.AddDays(-10)); console.log(dt.AddDays(-1)); console.log(dt.AddDays(0)); console.log(dt.AddDays(1)); console.log(dt.AddDays(10)); console.log(dt.AddDays(30));

Resultado

2017-09-03T15:01:37.213Z 2017-09-23T15:01:37.213Z 2017-10-02T15:01:37.213Z 2017-10-03T15:01:37.213Z 2017-10-04T15:01:37.213Z 2017-10-13T15:01:37.213Z 2017-11-02T15:01:37.213Z


var myDate = new Date(); //add a day to the date myDate.setDate(myDate.getDate() + 1);