วันที่ปัจจุบันแปลงเป็น 10 วันก่อนและ 10 วันหลังจากนั้น

Aug 19 2020

ฉันมีรหัสนี้ที่ฉันแปลงวันที่ปัจจุบันเป็นรูปแบบ2020-08-20นี้ แต่จะแก้ไขยังไงให้วันที่ 10 วันfromนี้กับ 10 วันbeforeนี้

เช่นวันนี้คือ2020-08-20ฉันพยายามจะได้ 10 วันนับจากวันนี้2020-08-30

นี่คือรหัสของฉัน

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

คำตอบ

2 Sascha Aug 19 2020 at 21:55

มันเป็นเรื่องเล็กน้อย ขั้นแรกตั้งค่าชั่วโมงจากวันที่ถึง 12 เพื่อหลีกเลี่ยงปัญหาเกี่ยวกับการเปลี่ยนฤดูร้อน / ฤดูหนาว จากนั้นใช้getDateเพิ่ม 10 สำหรับวันพิเศษและsetDateด้วยค่าใหม่ ตอนนี้คุณมีค่าเป็นมิลลิวินาทีแล้วสร้างวันที่ใหม่เพื่อรับ dateobject สำหรับวันที่สองลบ 20 วันเนื่องจากวันที่เดิมถูกเปลี่ยนแปลงโดยการกระทำก่อนหน้านี้และทำอย่างอื่นทั้งหมดเหมือนกัน

รูปแบบการออกสำหรับวันที่มีgetFullYear, และgetMonth getDateเนื่องจากเดือนถูกจัดการใน JS ตั้งแต่ 0 ถึง 11 จึงเพิ่ม 1 เดือน เดือนและวันที่ 1 อาจจะเป็นหลัก แต่คุณอยากให้มันเป็นตัวเลข 2 หลักเพื่อเพิ่มก่อนสตริง"0"และได้รับล่าสุด 2 sliceตัวอักษรของมันด้วย
ทำรูปแบบสำหรับวันที่ทั้งสองและส่งคืนเป็นอาร์เรย์

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

รหัสนี้จะช่วยคุณ

อ้างอิงJavaScript ที่คำนวณวันที่จากวันนี้ถึง 7 วันก่อน

หลังจาก 10 วันเพียงแค่แปลง - เป็น +

    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

ลองทำตามนี้

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

ฉันขอแนะนำให้คุณใช้ห้องสมุดช่วงเวลา แต่คุณยังต้องการจาวาสคริปต์ธรรมดา

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

ฟังก์ชั่นแปลงการโทรด้วยวันที่ใดก็ได้

ThaekeHekkenberg Aug 19 2020 at 21:40

ฉันเคยยุ่งเรื่องนั้นมาก่อนเช่นกัน แต่ใน Stack Overflow นี้คุณจะพบคำตอบที่ดีจริงๆ: เพิ่มวันใน JavaScript Date

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

นี่คือรหัสที่นำมาจากโพสต์นั้น

สำหรับการลบวันให้แทนที่ "+ days" ด้วย "- days"

หวังว่านี่จะช่วยแก้ปัญหาของคุณได้!

messerbill Aug 19 2020 at 21:42

คุณสามารถแปลงวันที่ทั้งหมดเป็นtimestampแล้วคำนวณด้วย:

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