Fecha actual convertida a 10 días antes y 10 días después
Tengo este código donde convierto la fecha actual a este formato 2020-08-20
. Pero, ¿cómo lo modifico para darme la fecha 10 días from
hoy y 10 días before
hoy?
por ejemplo, hoy 2020-08-20
estoy tratando de obtener 10 días a partir de hoy2020-08-30
Este es mi codigo
const dateConverter = (dateIn) => {
var year = dateIn.getFullYear();
var month = dateIn.getMonth() + 1; // getMonth() is zero-based
var day = dateIn.getDate();
return year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
var today = new Date();
console.log(dateConverter(today));
Respuestas
Es un poco complicado. Primero configure las horas desde la fecha a las 12 para evitar problemas con el cambio de horario de verano / invierno. Luego, getDate
agregue 10 para los días adicionales y setDate
con el nuevo valor. Ahora que tiene un valor en milisegundos, genere a partir de esto una nueva fecha para obtener un objeto de fecha. Para la segunda fecha reste 20 días porque la fecha original fue cambiada por la acción anterior y haga lo mismo para todos los demás.
Formatee la salida para las fechas con getFullYear
, getMonth
y getDate
. Debido a que el mes se maneja en JS de 0 a 11, agregue 1 mes. Los meses y los días pueden ser de 1 dígito, pero desea que tengan 2 dígitos, así que agregue antes de la cadena "0"
y obtenga los últimos 2 caracteres con slice
.
Haz el formato para ambas fechas y devuélvelas como una matriz.
const dateConverter = (dateIn) => {
dateIn.setHours(12);
let dateIn10days = new Date(dateIn.setDate(dateIn.getDate() + 10));
let dateFor10days = new Date(dateIn.setDate(dateIn.getDate() - 20));
let strIn10Days = dateIn10days.getFullYear() + '-' + ('0' +(dateIn10days.getMonth()+1)).slice(-2) + '-' + ('0' + dateIn10days.getDate()).slice(-2);
let strFor10Days = dateFor10days.getFullYear() + '-' + ('0' +(dateFor10days.getMonth()+1)).slice(-2) + '-' + ('0' + dateFor10days.getDate()).slice(-2);
return [strFor10Days, strIn10Days];
}
let today = new Date();
console.log(dateConverter(today));
Este código te ayudará
JavaScript de referencia calculando la fecha desde hoy hasta 7 días antes
para después de 10 días simplemente convierta el - en +
const dateConverter = (dateIn) => {
var dates ={};
var days = 10; // Days you want to subtract
for(let i=0;i<days;i++){
var date = dateIn;
var last = new Date(date.getTime() - (i * 24 * 60 * 60 * 1000));
var day = last.getDate();
var month= last.getMonth()+1;
var year= last.getFullYear();
dates[i] = year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
return dates
}
var today = new Date();
console.log(dateConverter(today));
Prueba esto
const dateConverter = (dateIn) => {
var year = dateIn.getFullYear();
var month = dateIn.getMonth() + 1; // getMonth() is zero-based
var day = dateIn.getDate();
return year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
var today = new Date();
var numberOfDaysToAdd = 10;
var tenDaysPlus = today.setDate(today.getDate() + numberOfDaysToAdd);
console.log(dateConverter(today));
var today = new Date();
var numberOfDaysToSubtract = 10;
var tenDaysMinus = today.setDate(today.getDate() - numberOfDaysToSubtract);
console.log(dateConverter(today));
Le sugiero que use la biblioteca de momentos, pero aún quiere javascript simple
const convert = (date) => {
const pastDate = new Date(date)
pastDate.setDate(pastDate.getDate() - 10);
const futureDate = new Date(date)
futureDate.setDate(futureDate.getDate() + 10);
return { pastDate, futureDate }
}
llamar a la función de conversión con cualquier fecha.
También he estado jugando con eso antes. Pero en este Stack Overflow puede encontrar una respuesta realmente buena: Agregar días a la fecha de JavaScript
Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
var date = new Date();
alert(date.addDays(5));
Este es el código tomado de esa publicación.
Para restar días, simplemente reemplace "+ días" por "- días"
¡Espero que esto haya resuelto tu problema!
Puede convertir todas las fechas timestamp
ay luego simplemente calcular con ellas:
const dateTimestamp = new Date("2020-10-10").getTime()
const milisecondsInADay = 60*60*24*1000
const milisecondsInTenDays = milisecondsInADay * 10
const beforeDate = new Date(dateTimestamp - milisecondsInTenDays)
const afterDate = new Date(dateTimestamp + milisecondsInTenDays)
console.log("before", beforeDate)
console.log("after", afterDate)
console.log("initially", new Date(dateTimestamp))