Files
2026-05-30 19:59:39 -03:00

29 lines
1.2 KiB
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,
});
}