javascript 連続した日付を配列として生成する

javascript 連続した日付を配列として生成する

javascriptで、連続した日付を配列として生成するサンプルコードを記述してます。「for」文などで開始日付と終了日付を指定してループさせることで生成することができます。

環境

  • OS windows11 pro 64bit
  • ブラウザ chrome 109.0.5414.75

手順

連続した日付を配列として生成するには、
1. 開始日付と終了日付を用意
2. for文で1日づつ日付を加算して終了日付までループして用意した配列に「push」で追加
することで可能です。

let start = new Date("2023-01-01");
let end = new Date("2023-12-31");

let dateArr = [];
 
for(let day = start; day <= end; day.setDate(day.getDate()+1)) {
  // フォーマットを指定
  let result = `${day.getFullYear()}-${(day.getMonth()+1)}-${day.getDate()}`; 
  // 配列に追加
  dateArr.push(result);
}
 
console.log(dateArr);

実行結果をみると生成されていることが確認できます。

また、以下のように「map」を使用する方法もあります。以下のコードでは連続した100個の日付を生成してます。

let start = new Date("2023-01-01");

// 1日減算
start = new Date(start.setDate(start.getDate() - 1));

// 100個生成
let dateArr = Array.apply(null, {length: 100}).map((v) => 
  new Date(start.setDate(start.getDate() + 1))
);

// フォーマットを変更
dateArr = dateArr.map(v => `${v.getFullYear()}-${(v.getMonth()+1)}-${v.getDate()}` );

console.log(dateArr);

スプレッド構文とmapを使用する方法もあります。ここでは関数化してます。

const getDateArr = (start,n) =>{
  start = new Date(new Date(start).setDate(new Date(start).getDate() - 1));
  return [...Array(n)].map( v => new Date(start.setDate(start.getDate() + 1)) ).map(v => `${v.getFullYear()}-${(v.getMonth()+1)}-${v.getDate()}` );
}

// 開始日付と生成する個数を指定
console.log(
  getDateArr("2023-01-01",100)
)