From 781daa61a2b2871f5d08567e5486008a81463e69 Mon Sep 17 00:00:00 2001 From: Brandon Date: Sat, 11 Feb 2023 21:53:12 -0500 Subject: [PATCH] fix: compensate for timezone by using offset --- src/components/AirDateBadge/index.tsx | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/components/AirDateBadge/index.tsx b/src/components/AirDateBadge/index.tsx index c626aad9..63c71f08 100644 --- a/src/components/AirDateBadge/index.tsx +++ b/src/components/AirDateBadge/index.tsx @@ -15,7 +15,9 @@ const AirDateBadge = ({ airDate }: AirDateBadgeProps) => { const intl = useIntl(); const dAirDate = new Date(airDate); const nowDate = new Date(); - const alreadyAired = dAirDate.getTime() < nowDate.getTime(); + const dAirDateOffset = + dAirDate.getTime() - dAirDate.getTimezoneOffset() * -60000; + const alreadyAired = dAirDateOffset < nowDate.getTime(); const compareWeek = new Date( alreadyAired ? Date.now() - WEEK : Date.now() + WEEK @@ -24,12 +26,16 @@ const AirDateBadge = ({ airDate }: AirDateBadgeProps) => { let showRelative = false; if ( - (alreadyAired && dAirDate.getTime() > compareWeek.getTime()) || - (!alreadyAired && dAirDate.getTime() < compareWeek.getTime()) + (alreadyAired && dAirDateOffset > compareWeek.getTime()) || + (!alreadyAired && dAirDateOffset < compareWeek.getTime()) ) { showRelative = true; } + const relativeTime = (dAirDateOffset - Date.now()) / 1000; + + const within24Hours = Math.floor(Math.abs(relativeTime / (60 * 60))) <= 24; + return (
@@ -45,9 +51,15 @@ const AirDateBadge = ({ airDate }: AirDateBadgeProps) => { {intl.formatMessage( alreadyAired ? messages.airedrelative : messages.airsrelative, { - relativeTime: ( + relativeTime: within24Hours ? ( + alreadyAired ? ( + 'today' + ) : ( + 'tomorrow' + ) + ) : (