現在の日付を10日前と10日後に変換
現在の日付をこの形式に変換するこのコードがあります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));
回答
少し注意が必要です。夏/冬の時間変更の問題を回避するために、最初に日付から12までの時間を設定します。次にgetDate
、追加の日数とsetDate
新しい値に10を追加します。これでミリ秒単位の値が得られました。これから新しい日付を生成して、dateobjectを取得します。2番目の日付については、前のアクションによって元の日付が変更されたため、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));
このコードはあなたを助けます
今日の日付から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));
これを試して
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));
モーメントライブラリを使用することをお勧めしますが、それでもプレーンな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 }
}
任意の日付で変換関数を呼び出します。
私も以前にもそれをいじっていました。しかし、このスタックオーバーフローでは、本当に良い答えを見つけることができます: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));
これはその投稿から取られたコードです。
日を引くには、「+日」を「-日」に置き換えるだけです。
これで問題が解決したことを願っています!
すべての日付をに変換して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))