ある日付からある日付までを繰り返し処理する方法を記しています。
年を繰り返し処理する
想定される出力結果
2022/01/01
2023/01/01
2024/01/01
素のJavaScriptのみの場合
main.js
const startDate = new Date('2022');
const endDate = new Date('2024');
for (let d = startDate; d <= endDate; d.setFullYear(d.getFullYear() + 1)) {
const year = d.getFullYear().toString();
const month = (d.getMonth() + 1).toString().padStart(2, '0');
const day = d.getDate().toString().padStart(2, '0');
console.log(`${year}/${month}/${day}`);
}
date-fnsライブラリを使う場合
main.js
import { addYears, format } from 'date-fns';
const startDate = new Date('2022');
const endDate = new Date('2024');
for (let d = startDate; d <= endDate; d = addYears(d, 1)) {
console.log(format(d, 'yyyy/MM/dd'));
}
月を繰り返し処理する
想定される出力結果
2023/11/01
2023/12/01
2024/01/01
素のJavaScriptのみの場合
main.js
const startDate = new Date('2023/11');
const endDate = new Date('2024/01');
for (let d = startDate; d <= endDate; d.setFullYear(d.getFullYear() + 1)) {
const year = d.getFullYear().toString();
const month = (d.getMonth() + 1).toString().padStart(2, '0');
const day = d.getDate().toString().padStart(2, '0');
console.log(`${year}/${month}/${day}`);
}
date-fnsライブラリを使う場合
main.js
import { addMonths, format } from 'date-fns';
const startDate = new Date('2023/11');
const endDate = new Date('2024/01');
for (let d = startDate; d <= endDate; d = addMonths(d, 1)) {
console.log(format(d, 'yyyy/MM/dd'));
}
日を繰り返し処理する
想定される出力結果
2023/12/30
2023/12/31
2024/01/01
素のJavaScriptのみの場合
main.js
const startDate = new Date('2023/12/30');
const endDate = new Date('2024/01/01');
for (let d = startDate; d <= endDate; d.setDate(d.getDate() + 1)) {
const year = d.getFullYear().toString();
const month = (d.getMonth() + 1).toString().padStart(2, '0');
const day = d.getDate().toString().padStart(2, '0');
console.log(`${year}/${month}/${day}`);
}
date-fnsライブラリを使う場合
main.js
import { addMonths, format } from 'date-fns';
const startDate = new Date('2023/12/30');
const endDate = new Date('2024/01/01');
for (let d = startDate; d <= endDate; d = addDays(d, 1)) {
console.log(format(d, 'yyyy/MM/dd'));
}