diff --git a/src/libs/DateUtils.ts b/src/libs/DateUtils.ts index 804e5f78e52f4..a07e131aaeccf 100644 --- a/src/libs/DateUtils.ts +++ b/src/libs/DateUtils.ts @@ -31,7 +31,7 @@ import { subMilliseconds, subMinutes, } from 'date-fns'; -import {formatInTimeZone, fromZonedTime, toZonedTime, format as tzFormat} from 'date-fns-tz'; +import {formatInTimeZone, fromZonedTime, toDate, toZonedTime, format as tzFormat} from 'date-fns-tz'; import {enGB} from 'date-fns/locale/en-GB'; import {es} from 'date-fns/locale/es'; import throttle from 'lodash/throttle'; @@ -756,7 +756,7 @@ const getTimeValidationErrorKey = (inputTime: Date): string => { * returns If the date is valid, returns the formatted date with the UTC timezone, otherwise returns an empty string. */ function formatWithUTCTimeZone(datetime: string, dateFormat: string = CONST.DATE.FNS_FORMAT_STRING) { - const date = new Date(datetime); + const date = toDate(datetime, {timeZone: 'UTC'}); if (isValid(date)) { return tzFormat(toZonedTime(date, 'UTC'), dateFormat); diff --git a/src/libs/TransactionUtils/index.ts b/src/libs/TransactionUtils/index.ts index f8374bfa358e6..d7423d5409b05 100644 --- a/src/libs/TransactionUtils/index.ts +++ b/src/libs/TransactionUtils/index.ts @@ -1,4 +1,4 @@ -import {parse} from 'date-fns'; +import {format, isValid, parse} from 'date-fns'; import lodashDeepClone from 'lodash/cloneDeep'; import lodashHas from 'lodash/has'; import lodashIsEqual from 'lodash/isEqual'; @@ -558,7 +558,11 @@ function getPostedDate(transaction: OnyxInputOrEntry): string { function getFormattedPostedDate(transaction: OnyxInputOrEntry, dateFormat: string = CONST.DATE.FNS_FORMAT_STRING): string { const postedDate = getPostedDate(transaction); const parsedDate = parse(postedDate, 'yyyyMMdd', new Date()); - return DateUtils.formatWithUTCTimeZone(parsedDate.toDateString(), dateFormat); + + if (isValid(parsedDate)) { + return DateUtils.formatWithUTCTimeZone(format(parsedDate, 'yyyy-MM-dd'), dateFormat); + } + return ''; } /** diff --git a/tests/unit/DateUtilsTest.ts b/tests/unit/DateUtilsTest.ts index 0b07e201c45f7..ff411e62f9d09 100644 --- a/tests/unit/DateUtilsTest.ts +++ b/tests/unit/DateUtilsTest.ts @@ -234,6 +234,12 @@ describe('DateUtils', () => { expect(formattedDate).toEqual(expectedResult); }); }); + + it('returns the correct date when the date with time is used', () => { + const datetimeStr = '2022-11-07 17:48:00'; + const expectedResult = '2022-11-07'; + expect(DateUtils.formatWithUTCTimeZone(datetimeStr)).toEqual(expectedResult); + }); }); describe('getLastBusinessDayOfMonth', () => {