Fecha actual convertida a 10 días antes y 10 días después

Aug 19 2020

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 fromhoy y 10 días beforehoy?

por ejemplo, hoy 2020-08-20estoy 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

2 Sascha Aug 19 2020 at 21:55

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, getDateagregue 10 para los días adicionales y setDatecon 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, getMonthy 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));

2 Hasan_Naser Aug 19 2020 at 21:51

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));
       

1 Chilarai Aug 19 2020 at 21:41

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));
1 Ashok Aug 19 2020 at 21:47

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.

ThaekeHekkenberg Aug 19 2020 at 21:40

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!

messerbill Aug 19 2020 at 21:42

Puede convertir todas las fechas timestampay 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))