@@ -54,24 +54,21 @@ export const HeatmapColors = ['#D9D9D9', '#C1E0C1', '#9BE89B', '#7AE47A', '#45EF
5454
5555export const NUMBER_OF_TIME_SLOTS = enumToArray ( REVIEW_TIMES ) . length * enumToArray ( DAY_NAMES ) . length ;
5656
57- const nthWeekday = ( year : number , month : MONTH_NAMES , weekday : DAY_NAMES , nth : number ) => {
58- const day = new Date ( year , month ! , 1 ) ;
59- const dayDiff = ( weekday ! - day . getDay ( ) + 7 ) % 7 ;
57+ const ESTOffset = ( ) => {
58+ const parts = new Intl . DateTimeFormat ( 'en' , {
59+ timeZone : 'America/New_York' ,
60+ timeZoneName : 'shortOffset'
61+ } ) . formatToParts ( new Date ( ) ) ;
6062
61- return new Date ( year , month , 1 + dayDiff + ( nth - 1 ) * 7 ) ;
62- } ;
63-
64- const daylightSavings = ( ) => {
65- const currDate = new Date ( ) ;
63+ const GMTTime = parts . find ( ( t ) => t . type === 'timeZoneName' ) ;
64+ const offsetEST = Number ( GMTTime ! . value . replace ( 'GMT' , '' ) ) ;
6665
67- const start = nthWeekday ( currDate . getFullYear ( ) , MONTH_NAMES . March , DAY_NAMES . Sunday , 2 ) ;
68- const end = nthWeekday ( currDate . getFullYear ( ) , MONTH_NAMES . November , DAY_NAMES . Sunday , 1 ) ;
69- return currDate >= start && currDate < end ;
66+ return offsetEST ;
7067} ;
7168
7269export const userOffsetTime = ( ) => {
7370 const UTCOffset = - new Date ( ) . getTimezoneOffset ( ) / 60 ;
74- const EST = daylightSavings ( ) ? - 4 : - 5 ;
71+ const EST = ESTOffset ( ) ;
7572 const userOffset = UTCOffset - EST ;
7673 return userOffset ;
7774} ;
0 commit comments