react-day-picker
Version:
Customizable Date Picker for React
29 lines (28 loc) • 1.22 kB
JavaScript
import { getMonthCode, isHebrewLeapYear, monthsInHebrewYear, } from "../utils/calendarMath.js";
import { toGregorianDate, toHebrewDate } from "../utils/dateConversion.js";
import { clampHebrewDay } from "../utils/serial.js";
import { findMonthIndexByCode } from "./findMonthIndexByCode.js";
export function setYear(date, year) {
const hebrew = toHebrewDate(date);
const targetYear = year;
const originalCode = getMonthCode(hebrew.year, hebrew.monthIndex);
let targetMonthIndex = findMonthIndexByCode(targetYear, originalCode);
if (targetMonthIndex === -1) {
if (originalCode === "adarI") {
targetMonthIndex = findMonthIndexByCode(targetYear, "adar");
}
else if (originalCode === "adar" && !isHebrewLeapYear(targetYear)) {
targetMonthIndex = findMonthIndexByCode(targetYear, "adar");
}
else {
const monthsCount = monthsInHebrewYear(targetYear);
targetMonthIndex = Math.min(hebrew.monthIndex, monthsCount - 1);
}
}
const day = clampHebrewDay(targetYear, targetMonthIndex, hebrew.day);
return toGregorianDate({
year: targetYear,
monthIndex: targetMonthIndex,
day,
});
}