27 lines
947 B
JavaScript
27 lines
947 B
JavaScript
import { toDate } from "date-fns";
|
|
import { toGregorianDate, toHijriDate } from "../utils/conversion.js";
|
|
export function eachMonthOfInterval(interval) {
|
|
const start = toDate(interval.start);
|
|
const end = toDate(interval.end);
|
|
if (end.getTime() < start.getTime()) {
|
|
throw new RangeError("Invalid interval");
|
|
}
|
|
const startDate = toHijriDate(start);
|
|
const endDate = toHijriDate(end);
|
|
const months = [];
|
|
let currentYear = startDate.year;
|
|
let currentMonth = startDate.monthIndex;
|
|
const endYear = endDate.year;
|
|
const endMonth = endDate.monthIndex;
|
|
while (currentYear < endYear ||
|
|
(currentYear === endYear && currentMonth <= endMonth)) {
|
|
months.push(toGregorianDate({ year: currentYear, monthIndex: currentMonth, day: 1 }));
|
|
currentMonth += 1;
|
|
if (currentMonth > 11) {
|
|
currentMonth = 0;
|
|
currentYear += 1;
|
|
}
|
|
}
|
|
return months;
|
|
}
|