From 4a0a28b54e74b30d4f02279f3a11da37be6471b0 Mon Sep 17 00:00:00 2001 From: Ranindya Paramitha <23520019@std.stei.itb.ac.id> Date: Sat, 3 Apr 2021 17:55:20 +0700 Subject: [PATCH] fix timezone issue course class meeting --- backend/src/util/common.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/backend/src/util/common.js b/backend/src/util/common.js index 04754d38..f218df5a 100644 --- a/backend/src/util/common.js +++ b/backend/src/util/common.js @@ -88,11 +88,11 @@ const generateCourseClassMeetings = async (courseClass) => { let startDate, endDate; if (courseClass.semester === SemesterEnum.ODD){ - startDate = new Date(courseClass.startYear, 7, 15); - endDate = new Date(courseClass.startYear, 11, 15); + startDate = new Date(`${courseClass.startYear}-08-15T00:00:00.000+07:00`); + endDate = new Date(`${courseClass.startYear}-12-15T00:00:00.000+07:00`); } else { - startDate = new Date(courseClass.startYear+1, 0, 15); - endDate = new Date(courseClass.startYear+1, 4, 15); + startDate = new Date(`${courseClass.startYear+1}-01-15T00:00:00.000+07:00`); + endDate = new Date(`${courseClass.startYear+1}-05-15T00:00:00.000+07:00`); } const courseClassDefaultSchedules = await CourseClassDefaultSchedule.findAll({ @@ -102,15 +102,21 @@ const generateCourseClassMeetings = async (courseClass) => { }); for (let i = 0; i < courseClassDefaultSchedules.length; i++){ - for (let d = startDate; d <= endDate; d.setDate(d.getDate() + 1)) { - - if (startDate.getDay() === DayEnum[courseClassDefaultSchedules[i].day].value){ + for (let d = new Date(startDate.getTime()); d <= endDate; d.setDate(d.getDate() + 1)) { + if (d.getDay() === DayEnum[courseClassDefaultSchedules[i].day].value){ const startTimeParts = courseClassDefaultSchedules[i].start.match(/(\d+):(\d+):(\d+)/); const endTimeParts = courseClassDefaultSchedules[i].end.match(/(\d+):(\d+):(\d+)/); - const start = d.setUTCHours(parseInt(startTimeParts[1], 10), parseInt(startTimeParts[2], 10), parseInt(startTimeParts[3], 10)); - const end = d.setUTCHours(parseInt(endTimeParts[1], 10), parseInt(endTimeParts[2], 10), parseInt(endTimeParts[3], 10)); + let start = new Date(d.getTime()); + start.setHours(parseInt(startTimeParts[1], 10)); + start.setMinutes(parseInt(startTimeParts[2], 10)); + start.setSeconds(parseInt(startTimeParts[3], 10)); + + let end = new Date(d.getTime()); + end.setHours(parseInt(endTimeParts[1], 10)); + end.setMinutes(parseInt(endTimeParts[2], 10)); + end.setSeconds(parseInt(endTimeParts[3], 10)); await CourseClassMeeting.create({ courseClassId: courseClass.id, -- GitLab