Tanggal Saat Ini diubah menjadi 10 hari sebelum dan 10 hari setelahnya

Aug 19 2020

Saya memiliki kode ini di mana saya mengonversi tanggal sekarang ke format ini 2020-08-20. Tapi bagaimana cara mengubahnya untuk memberi saya tanggal 10 hari hari fromini dan 10 hari hari beforeini.

misalnya hari ini 2020-08-20saya mencoba untuk mendapatkan 10 hari dari hari ini2020-08-30

Ini kode saya

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

Jawaban

2 Sascha Aug 19 2020 at 21:55

Ini sedikit rumit. Pertama-tama, setel jam dari tanggal ke 12 untuk menghindari masalah dengan perubahan musim panas / musim dingin. Kemudian gunakan getDatetambahkan 10 untuk hari ekstra dan setDatedengan nilai baru. Sekarang Anda memiliki nilai dalam milidetik, hasilkan tanggal baru ini untuk mendapatkan objek tanggal. Untuk tanggal kedua kurangi 20 hari karena tanggal asli diubah oleh tindakan sebelumnya dan lakukan hal yang sama.

Format keluaran untuk tanggal dengan getFullYear, getMonthdan getDate. Karena bulan ditangani di JS dari 0 hingga 11 tambahkan 1 bulan. Bulan dan hari bisa 1 digit tetapi Anda menginginkannya 2 digit, jadi tambahkan sebelum string "0"dan dapatkan 2 karakter terakhir dengannya slice.
Lakukan format untuk kedua tanggal dan kembalikan sebagai 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

Kode ini akan membantu Anda

Referensi tanggal penghitungan JavaScript dari tanggal hari ini hingga 7 hari sebelumnya

karena setelah 10 hari cukup ubah - menjadi +

    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

Coba ini

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

Saya akan menyarankan Anda untuk menggunakan pustaka momen tetapi Anda masih menginginkan javascript biasa

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

panggilan fungsi konversi dengan tanggal apapun.

ThaekeHekkenberg Aug 19 2020 at 21:40

Saya telah mengotak-atik itu sebelumnya juga. Tetapi pada Stack Overflow ini Anda dapat menemukan jawaban yang sangat bagus: Tambahkan hari ke JavaScript Tanggal

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

Ini adalah kode yang diambil dari postingan itu.

Untuk mengurangi hari, cukup ganti "+ hari" dengan "- hari"

Semoga ini menyelesaikan masalah Anda!

messerbill Aug 19 2020 at 21:42

Anda dapat mengonversi semua tanggal menjadi timestampdan kemudian menghitung dengan mereka:

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