UNPKG

@zag-js/date-utils

Version:

Date utilities for zag.js

51 lines (50 loc) 1.64 kB
// src/preset.ts import { endOfMonth, endOfWeek, endOfYear, now, startOfMonth, startOfWeek, startOfYear, toCalendarDate } from "@internationalized/date"; function getDateRangePreset(preset, locale, timeZone) { const today = toCalendarDate(now(timeZone)); switch (preset) { case "thisWeek": return [startOfWeek(today, locale), endOfWeek(today, locale)]; case "thisMonth": return [startOfMonth(today), today]; case "thisQuarter": return [startOfMonth(today).add({ months: -((today.month - 1) % 3) }), today]; case "thisYear": return [startOfYear(today), today]; case "last3Days": return [today.add({ days: -2 }), today]; case "last7Days": return [today.add({ days: -6 }), today]; case "last14Days": return [today.add({ days: -13 }), today]; case "last30Days": return [today.add({ days: -29 }), today]; case "last90Days": return [today.add({ days: -89 }), today]; case "lastMonth": return [startOfMonth(today.add({ months: -1 })), endOfMonth(today.add({ months: -1 }))]; case "lastQuarter": return [ startOfMonth(today.add({ months: -((today.month - 1) % 3) - 3 })), endOfMonth(today.add({ months: -((today.month - 1) % 3) - 1 })) ]; case "lastWeek": return [startOfWeek(today, locale).add({ weeks: -1 }), endOfWeek(today, locale).add({ weeks: -1 })]; case "lastYear": return [startOfYear(today.add({ years: -1 })), endOfYear(today.add({ years: -1 }))]; default: throw new Error(`Invalid date range preset: ${preset}`); } } export { getDateRangePreset };