UNPKG

@ipohjs/calendar

Version:
35 lines 1.43 kB
import { fromPartsToUtcDate } from './from-parts-to-utc-date.js'; export function toUTCDate(inputDate, offset) { const offsetYear = offset?.year ?? 0; const offsetMonth = offset?.month ?? 0; const offsetDate = offset?.day ?? 0; const offsetOrder = offset?.order ?? 'ymd'; let y = inputDate.getUTCFullYear(); let m = inputDate.getUTCMonth(); let d = inputDate.getUTCDate(); const reorderedParts = [...offsetOrder].map((n) => { switch (n) { case 'y': return [n, [offsetYear, 0, 0]]; case 'm': return [n, [0, offsetMonth, 0]]; case 'd': default: return [n, [0, 0, offsetDate]]; } }); for (const [key, [dy, dm, dd]] of reorderedParts) { const newDate = fromPartsToUtcDate(y + dy, m + dm, d + dd); const lastDayOfNewDateCurrentMonth = fromPartsToUtcDate(newDate.getUTCFullYear(), m + dm + 1, 0); if (key !== 'd' && d + dd > lastDayOfNewDateCurrentMonth.getUTCDate()) { y = lastDayOfNewDateCurrentMonth.getUTCFullYear(); m = lastDayOfNewDateCurrentMonth.getUTCMonth(); d = lastDayOfNewDateCurrentMonth.getUTCDate(); } else { y = newDate.getUTCFullYear(); m = newDate.getUTCMonth(); d = newDate.getUTCDate(); } } return fromPartsToUtcDate(y, m, d); } //# sourceMappingURL=to-utc-date.js.map