diff --git a/core/src/components/datetime/test/format.spec.ts b/core/src/components/datetime/test/format.spec.ts index ef9fb4ea2f..a79411c349 100644 --- a/core/src/components/datetime/test/format.spec.ts +++ b/core/src/components/datetime/test/format.spec.ts @@ -155,4 +155,17 @@ describe('getLocalizedTime', () => { expect(getLocalizedTime('en-US', datetimeParts, false)).toEqual('9:40 AM'); }); + + it('should avoid Chromium bug when using 12 hour time in a 24 hour locale', () => { + const datetimeParts = { + day: 1, + month: 1, + year: 2022, + hour: 0, + minute: 0, + tzOffset: 0, + }; + + expect(getLocalizedTime('en-GB', datetimeParts, false)).toEqual('12:00 am'); + }); }); diff --git a/core/src/components/datetime/utils/format.ts b/core/src/components/datetime/utils/format.ts index 2ea4980381..beddc2319f 100644 --- a/core/src/components/datetime/utils/format.ts +++ b/core/src/components/datetime/utils/format.ts @@ -19,7 +19,11 @@ export const getLocalizedTime = (locale: string, refParts: DatetimeParts, use24H hour: 'numeric', minute: 'numeric', timeZone: 'UTC', - hour12: !use24Hour, + /** + * We use hourCycle here instead of hour12 due to: + * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2 + */ + hourCycle: use24Hour ? 'h23' : 'h12', }).format( new Date( convertDataToISO({