現在の日付を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、追加の日数とsetDate新しい値に10を追加します。これでミリ秒単位の値が得られました。これから新しい日付を生成して、dateobjectを取得します。2番目の日付については、前のアクションによって元の日付が変更されたため、20日を引き、他のすべての日付も同じにします。

日付の出力をフォーマットしgetFullYeargetMonthそして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

このコードはあなたを助けます

今日の日付から7日前までのJavaScript計算日付を参照してください

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

モーメントライブラリを使用することをお勧めしますが、それでもプレーンな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 } 
}

任意の日付で変換関数を呼び出します。

ThaekeHekkenberg Aug 19 2020 at 21:40

私も以前にもそれをいじっていました。しかし、このスタックオーバーフローでは、本当に良い答えを見つけることができます: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));

これはその投稿から取られたコードです。

日を引くには、「+日」を「-日」に置き換えるだけです。

これで問題が解決したことを願っています!

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