UNPKG

@oxog/kairos

Version:

Revolutionary zero-dependency JavaScript date/time library with modular architecture and dynamic holiday system

84 lines 3.77 kB
const fiscalPlugin = { name: 'fiscal', install(kairos) { kairos.extend({ fiscalYear(config) { const startMonth = config?.startMonth || 1; const currentMonth = this.month(); const currentYear = this.year(); if (currentMonth >= startMonth) { return currentYear; } else { return currentYear - 1; } }, fiscalQuarter(config) { const startMonth = config?.startMonth || 1; const currentMonth = this.month(); let adjustedMonth = currentMonth - startMonth + 1; if (adjustedMonth <= 0) { adjustedMonth += 12; } return Math.ceil(adjustedMonth / 3); }, fiscalMonth(config) { const startMonth = config?.startMonth || 1; const currentMonth = this.month(); let adjustedMonth = currentMonth - startMonth + 1; if (adjustedMonth <= 0) { adjustedMonth += 12; } return adjustedMonth; }, startOfFiscalYear(config) { const startMonth = config?.startMonth || 1; const fiscalYear = this.fiscalYear(config); return kairos().year(fiscalYear).month(startMonth).date(1).startOf('day'); }, endOfFiscalYear(config) { const startMonth = config?.startMonth || 1; const fiscalYear = this.fiscalYear(config); const endYear = startMonth === 1 ? fiscalYear : fiscalYear + 1; const endMonth = startMonth === 1 ? 12 : startMonth - 1; return kairos().year(endYear).month(endMonth).endOf('month'); }, startOfFiscalQuarter(config) { const startMonth = config?.startMonth || 1; const quarter = this.fiscalQuarter(config); const fiscalYear = this.fiscalYear(config); const quarterStartMonth = startMonth + (quarter - 1) * 3; const year = quarterStartMonth > 12 ? fiscalYear + 1 : fiscalYear; const month = quarterStartMonth > 12 ? quarterStartMonth - 12 : quarterStartMonth; return kairos().year(year).month(month).date(1).startOf('day'); }, endOfFiscalQuarter(config) { const startMonth = config?.startMonth || 1; const quarter = this.fiscalQuarter(config); const fiscalYear = this.fiscalYear(config); const quarterEndMonth = startMonth + quarter * 3 - 1; const year = quarterEndMonth > 12 ? fiscalYear + 1 : fiscalYear; const month = quarterEndMonth > 12 ? quarterEndMonth - 12 : quarterEndMonth; return kairos().year(year).month(month).endOf('month'); }, }); kairos.addStatic({ fiscalYear(date, config) { return kairos(date).fiscalYear(config); }, fiscalQuarter(date, config) { return kairos(date).fiscalQuarter(config); }, createFiscalCalendar(config) { return { startMonth: config?.startMonth || 1, getYear: (date) => kairos(date).fiscalYear(config), getQuarter: (date) => kairos(date).fiscalQuarter(config), getMonth: (date) => kairos(date).fiscalMonth(config), }; }, }); }, }; export default fiscalPlugin; //# sourceMappingURL=fiscal.js.map