Skip to content

Commit 711c154

Browse files
authored
Merge pull request #94 from cortex-reply/fix-timezone-holiday-issue
Fix timezone holiday issue
2 parents 5c0be83 + 0da1ce8 commit 711c154

2 files changed

Lines changed: 378 additions & 6 deletions

File tree

src/components/Holidays/RequestLeave.tsx

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,14 @@ const ButtonGroup: React.FC<ButtonGroupProps> = ({ options, value, onChange, dis
4444
}
4545

4646
export function RequestLeave({ remainingDays, submitLeaveRequest }: RequestLeaveProps) {
47-
const [startDate, setStartDate] = useState<Date | undefined>(new Date())
48-
const [endDate, setEndDate] = useState<Date | undefined>(new Date())
47+
// Helper to create a UTC midnight date from the user's local date (year, month, day)
48+
// This preserves the user's selected day regardless of their timezone
49+
const setToMidnightUTC = (date: Date) => {
50+
return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0))
51+
}
52+
53+
const [startDate, setStartDate] = useState<Date | undefined>(() => setToMidnightUTC(new Date()))
54+
const [endDate, setEndDate] = useState<Date | undefined>(() => setToMidnightUTC(new Date()))
4955
const [leaveType, setLeaveType] = useState('Full Day')
5056
const [isMultipleDays, setIsMultipleDays] = useState(false)
5157
const [totalDays, setTotalDays] = useState(1)
@@ -137,9 +143,12 @@ export function RequestLeave({ remainingDays, submitLeaveRequest }: RequestLeave
137143
mode="single"
138144
selected={startDate}
139145
onSelect={(date) => {
140-
setStartDate(date)
141-
if (date && (!endDate || date > endDate)) {
142-
setEndDate(date)
146+
if (date) {
147+
const dateMidnight = setToMidnightUTC(date)
148+
setStartDate(dateMidnight)
149+
if (!endDate || date > endDate) {
150+
setEndDate(dateMidnight)
151+
}
143152
}
144153
}}
145154
initialFocus
@@ -166,7 +175,11 @@ export function RequestLeave({ remainingDays, submitLeaveRequest }: RequestLeave
166175
<Calendar
167176
mode="single"
168177
selected={endDate}
169-
onSelect={setEndDate}
178+
onSelect={(date) => {
179+
if (date) {
180+
setEndDate(setToMidnightUTC(date))
181+
}
182+
}}
170183
disabled={(date) => (startDate ? date < startDate : false)}
171184
initialFocus
172185
/>

0 commit comments

Comments
 (0)