From 96b2003b2bd5089d1faafe262e96c7445c5c3349 Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Thu, 14 Apr 2022 22:54:11 +0545 Subject: [PATCH] fix(datetime): account for 30 and 45 minute timezones when getting current date (#25120) resolves #25112 --- core/src/components/datetime/utils/data.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/core/src/components/datetime/utils/data.ts b/core/src/components/datetime/utils/data.ts index f3e860f4f9..853cc44962 100644 --- a/core/src/components/datetime/utils/data.ts +++ b/core/src/components/datetime/utils/data.ts @@ -27,7 +27,24 @@ export const getToday = () => { * there was a net change of zero hours from the * local date. */ - date.setHours(date.getHours() - tzOffset / 60); + const adjustedHours = date.getHours() - tzOffset / 60; + + /** + * Some timezones include minute adjustments + * such as 30 or 45 minutes. + * Example: India Standard Time + * Timezone offset: -330 = -5.5 hours. + * + * As a result, we need to make sure we also + * increment the minutes as well. + * List of timezones with 30 and 45 minute timezones: + * https://www.timeanddate.com/time/time-zones-interesting.html + */ + const minutesRemainder = adjustedHours % 1; + const adjustedMinutes = date.getMinutes() + minutesRemainder * 60; + date.setHours(adjustedHours); + date.setMinutes(adjustedMinutes); + return date.toISOString(); };