Data corrente convertita in 10 giorni prima e 10 giorni dopo

Aug 19 2020

Ho questo codice in cui converto la data corrente in questo formato 2020-08-20. Ma come posso modificarlo per darmi la data 10 giorni fromoggi e 10 giorni beforeoggi.

ad esempio, oggi 2020-08-20sto cercando di ottenere 10 giorni da oggi2020-08-30

Questo è il mio codice

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

Risposte

2 Sascha Aug 19 2020 at 21:55

È un po 'complicato. Impostare prima le ore dalla data a 12 per evitare problemi con il cambio orario estivo / invernale. Quindi usa getDateadd 10 per i giorni extra e setDatecon il nuovo valore. Ora hai un valore in millisecondi, genera da questo una nuova data per ottenere un oggetto data. Per la seconda data sottrarre 20 giorni perché la data originale è stata modificata dall'azione precedente e fare tutte le altre allo stesso modo.

Formatta l'output per le date con getFullYear, getMonthe getDate. Poiché il mese è gestito in JS da 0 a 11, aggiungi 1 mese. Mesi e giorni potrebbero essere 1 cifra ma vuoi 2 cifre, quindi aggiungi prima della stringa "0"e ottieni gli ultimi 2 caratteri con slice.
Esegui il formato per entrambe le date e restituiscile come array.

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

Questo codice ti aiuterà

Riferimento JavaScript per il calcolo della data dalla data odierna a 7 giorni prima

per dopo 10 giorni basta convertire il - in +

    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

Prova questo

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

Ti suggerirei di utilizzare la libreria Moment ma desideri comunque un semplice javascript

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 } 
}

chiama la funzione di conversione con qualsiasi data.

ThaekeHekkenberg Aug 19 2020 at 21:40

Anch'io ci ho già pensato in passato. Ma su questo Stack Overflow puoi trovare un'ottima risposta: aggiungi giorni alla data 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));

Questo è il codice tratto da quel post.

Per sottrarre giorni, sostituisci semplicemente "+ giorni" con "- giorni"

Spero che questo abbia risolto il tuo problema!

messerbill Aug 19 2020 at 21:42

Puoi convertire tutte le date in timestampe poi semplicemente calcolare con esse:

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