import { sub, startOfMonth, endOfMonth, startOfWeek, startOfYear, startOfDay, } from 'date-fns'; import { todayDate, yesterdayDate } from './constants'; import { DateRangesType, DateRanges } from './types'; import { getZonedTime } from './utils'; export const dateRanges: DateRangesType = { [DateRanges.Today]: { label: 'Today', startDate: todayDate, endDate: todayDate, }, [DateRanges.Yesterday]: { label: 'Yesterday', startDate: yesterdayDate, endDate: yesterdayDate, }, [DateRanges.Last7Days]: { label: 'Last 7 days', startDate: sub(todayDate, { days: 6 }), endDate: todayDate, }, [DateRanges.Last30Days]: { label: 'Last 30 days', startDate: sub(todayDate, { days: 29 }), endDate: todayDate, }, [DateRanges.Last90Days]: { label: 'Last 90 days', startDate: sub(todayDate, { days: 89 }), endDate: todayDate, }, [DateRanges.LastMonth]: { label: 'Last month', startDate: startOfMonth(sub(todayDate, { months: 1 })), endDate: endOfMonth(sub(todayDate, { months: 1 })), }, [DateRanges.Last12Months]: { label: 'Last 12 months', startDate: startOfMonth(sub(todayDate, { months: 12 })), endDate: endOfMonth(sub(todayDate, { months: 1 })), }, [DateRanges.WeekToDate]: { label: 'Week to date', startDate: startOfWeek(todayDate), endDate: todayDate, }, [DateRanges.MonthToDate]: { label: 'Month to date', startDate: startOfMonth(todayDate), endDate: todayDate, }, [DateRanges.YearToDate]: { label: 'Year to date', startDate: startOfYear(todayDate), endDate: todayDate, }, }; export const dateRangesByTimezone = (timezone: string): DateRangesType => { const today = startOfDay(getZonedTime(new Date(), timezone)); const yesterday = sub(today, { days: 1 }); return { [DateRanges.Today]: { label: 'Today', startDate: today, endDate: today, }, [DateRanges.Yesterday]: { label: 'Yesterday', startDate: yesterday, endDate: yesterday, }, [DateRanges.Last7Days]: { label: 'Last 7 days', startDate: sub(today, { days: 6 }), endDate: today, }, [DateRanges.Last30Days]: { label: 'Last 30 days', startDate: sub(today, { days: 29 }), endDate: today, }, [DateRanges.Last90Days]: { label: 'Last 90 days', startDate: sub(today, { days: 89 }), endDate: today, }, [DateRanges.LastMonth]: { label: 'Last month', startDate: startOfMonth(sub(today, { months: 1 })), endDate: endOfMonth(sub(today, { months: 1 })), }, [DateRanges.Last12Months]: { label: 'Last 12 months', startDate: startOfMonth(sub(today, { months: 12 })), endDate: endOfMonth(sub(today, { months: 1 })), }, [DateRanges.WeekToDate]: { label: 'Week to date', startDate: startOfWeek(today), endDate: today, }, [DateRanges.MonthToDate]: { label: 'Month to date', startDate: startOfMonth(today), endDate: today, }, [DateRanges.YearToDate]: { label: 'Year to date', startDate: startOfYear(today), endDate: today, }, }; };