1年分のDateオブジェクトを月単位の配列で取得する JS
文章で説明するのが難しいけど、 家計簿っぽいものを作ってると今日の日付から 1 年前までの月単位の Date オブジェクトの配列データが欲しかったりする。
今日が、2018 年 10 月 20 日だとすると
[
Sat Oct 20 2018 00:00:00 GMT+0900 (日本標準時) {},
Thu Sep 20 2018 00:00:00 GMT+0900 (日本標準時) {},
Mon Aug 20 2018 00:00:00 GMT+0900 (日本標準時) {},
Fri Jul 20 2018 00:00:00 GMT+0900 (日本標準時) {},
Wed Jun 20 2018 00:00:00 GMT+0900 (日本標準時) {},
Sun May 20 2018 00:00:00 GMT+0900 (日本標準時) {},
Fri Apr 20 2018 00:00:00 GMT+0900 (日本標準時) {},
Tue Mar 20 2018 00:00:00 GMT+0900 (日本標準時) {},
Tue Feb 20 2018 00:00:00 GMT+0900 (日本標準時) {},
Sat Jan 20 2018 00:00:00 GMT+0900 (日本標準時) {},
Wed Dec 20 2017 00:00:00 GMT+0900 (日本標準時) {},
Mon Nov 20 2017 00:00:00 GMT+0900 (日本標準時) {}
]
こんな Date オブジェクトが入った配列が欲しい時
これは下記で取得できる
[...Array(12)].map((_, index) => {
const today = new Date();
return new Date(
today.getFullYear(),
today.getMonth() - index,
today.getDate()
);
});
手順的には、
[...Array(12)]
で[undefined, undefined, ...]
が取れて、それを map する(今回は 12 ヶ月分の配列が欲しいので)new Date(年, 月, 日)
で指定した日付の Date オブジェクトが取れるので、today.getMonth() - index
で月をデクリメントしつつ 返してあげる
単純だけど、一瞬あれどうだっけ?となるのでメモ。