| const dateOpts: Intl.DateTimeFormatOptions = { | |
| year: 'numeric', | |
| month: 'long', | |
| day: 'numeric', | |
| } | |
| export interface DateRange { | |
| endDate: string | |
| startDate: string | |
| friendlyRange: string | |
| } | |
| // Default to 30 days ago if a range option is not provided | |
| export function getDates(range: string | number = '30'): DateRange { | |
| // Get current datetime in ISO format | |
| const today = new Date() | |
| const todayISO = today.toISOString() | |
| // Get datetime from N days ago in ISO format | |
| const daysAgo = getDaysAgo(Number(range)) | |
| const daysAgoISO = daysAgo.toISOString() | |
| return { | |
| endDate: todayISO, | |
| startDate: daysAgoISO, | |
| friendlyRange: `${daysAgo.toLocaleDateString('en-US', dateOpts)} - ${today.toLocaleDateString('en-US', dateOpts)}`, | |
| } | |
| } | |
| function getDaysAgo(range: number): Date { | |
| const daysAgo = new Date() | |
| daysAgo.setDate(daysAgo.getDate() - range) | |
| return daysAgo | |
| } | |