Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java,v diff -u -r1.149.2.3 -r1.149.2.4 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 8 May 2009 01:49:20 -0000 1.149.2.3 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 8 May 2009 07:18:23 -0000 1.149.2.4 @@ -26,6 +26,7 @@ import java.io.IOException; import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Comparator; import java.util.Date; @@ -697,6 +698,15 @@ + " is already scheduled and cannot be rescheduled."); return; } + + // Change client/users schedule date to server's timezone. + User user = (User) baseDAO.find(User.class, userId); + + TimeZone tz = TimeZone.getDefault(); + TimeZone userTz = TimeZone.getTimeZone(User.timezoneList[user.getTimeZone()]); + int rawOffset = tz.getOffset(startDate.getTime()) - userTz.getOffset(startDate.getTime()); + + Date tzStartLessonDate = DateUtil.convertFromUTCToLocal(tz, DateUtil.convertToUTC(new Date(startDate.getTime() + rawOffset))); JobDetail startLessonJob = getStartScheduleLessonJob(); // setup the message for scheduling job @@ -709,10 +719,10 @@ // create customized triggers Trigger startLessonTrigger = new SimpleTrigger("startLessonOnScheduleTrigger:" + lessonId, - Scheduler.DEFAULT_GROUP, startDate); + Scheduler.DEFAULT_GROUP, tzStartLessonDate); // start the scheduling job try { - requestedLesson.setScheduleStartDate(startDate); + requestedLesson.setScheduleStartDate(tzStartLessonDate); scheduler.scheduleJob(startLessonJob, startLessonTrigger); setLessonState(requestedLesson, Lesson.NOT_STARTED_STATE); } catch (SchedulerException e) { @@ -1434,16 +1444,18 @@ Locale userLocale = new Locale(user.getLocale().getLanguageIsoCode(), user.getLocale().getCountryIsoCode()); TimeZone tz = TimeZone.getTimeZone(User.timezoneList[user.getTimeZone()]); + DateFormat indfm = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", userLocale); + indfm.setTimeZone(tz); + if (dto.getStartDateTime() != null) { Date tzStartDate = DateUtil.convertFromUTCToLocal(tz, DateUtil.convertToUTC(dto.getStartDateTime())); - dto.setStartDateTimeStr(DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, userLocale) - .format(tzStartDate)); + dto.setStartDateTimeStr(indfm.format(tzStartDate)); } if (dto.getScheduleStartDate() != null) { Date tzScheduleDate = DateUtil.convertFromUTCToLocal(tz, DateUtil.convertToUTC(dto.getScheduleStartDate())); - dto.setScheduleStartDateStr(DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, userLocale) - .format(tzScheduleDate)); + + dto.setScheduleStartDateStr(indfm.format(tzScheduleDate)); } MonitoringService.log.debug(dto.toString());