diff --git a/lib/utils/__tests__/dateHandling.test.ts b/lib/utils/__tests__/dateHandling.test.ts index ec1c9f55..57232b3c 100644 --- a/lib/utils/__tests__/dateHandling.test.ts +++ b/lib/utils/__tests__/dateHandling.test.ts @@ -7,6 +7,8 @@ test.each([ ['12 oktober 2020', '2020-10-11T22:00:00.000Z'], ['5 oktober 2020 11:34', '2020-10-05T09:34:00.000Z'], ['15 oktober 2020 11:34', '2020-10-15T09:34:00.000Z'], + ['2020-12-18T15:59:46.34', '2020-12-18T14:59:46.340Z'], + ['2020-12-18T15:59:46.340Z', '2020-12-18T15:59:46.340Z'], ['This is an invalid date', undefined], ])('handles date parsing of %s', (input, expected) => { expect(parseDate(input)).toEqual(expected) diff --git a/lib/utils/dateHandling.ts b/lib/utils/dateHandling.ts index 17b09302..6fbe0484 100644 --- a/lib/utils/dateHandling.ts +++ b/lib/utils/dateHandling.ts @@ -4,6 +4,8 @@ const options = { locale: 'sv', } +const toISOString = (date: DateTime) => date.toUTC().toISO() + export const parseDate = (input?: string): string | undefined => { if (!input) { return undefined @@ -12,28 +14,34 @@ export const parseDate = (input?: string): string | undefined => { const dateParse = (format: string) => DateTime.fromFormat(input, format, options) + const dateISO = DateTime.fromISO(input) + + if (dateISO.isValid) { + return toISOString(dateISO) + } + const dateAndTime = dateParse('yyyy-MM-dd HH:mm') if (dateAndTime.isValid) { - return dateAndTime.toUTC().toISO() + return toISOString(dateAndTime) } const onlyDate = dateParse('yyyy-MM-dd') if (onlyDate.isValid) { - return onlyDate.toUTC().toISO() + return toISOString(onlyDate) } const dateLongForm = dateParse('d MMMM yyyy') if (dateLongForm.isValid) { - return dateLongForm.toUTC().toISO() + return toISOString(dateLongForm) } const dateTimeLongForm = dateParse('d MMMM yyyy HH:mm') if (dateTimeLongForm.isValid) { - return dateTimeLongForm.toUTC().toISO() + return toISOString(dateTimeLongForm) } // Explicit return to satisfy ESLint