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
Obtenga el valor de la 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 a partir de la fecha valore y luego aumente la cantidad de días que desee.
var currentdate = new Date();
currentdate.setDate(currentdate.getDate() + 1);
var tomorrow = currentdate.toJSON().slice(0,10);
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);