他们使用GWT创建了一个包含日期选择器的表单,当用户提交表单时,选择的日期会在一天后返回。例如如果我选择2015年6月21日,它将转移到2015年6月20日。当用户时区与服务器时区不同时,会发生这种情况。当我调试它时,我发现它在将日期转换为日历时返回了一天,因为日期是客户区的日期和日期转换日期转换发生在服务器端,用于将其发送到编组(在向休息服务发送请求之前)用于保存的API。
以下代码用于将日期转换为日历。
Calendar cal = Calendar.getInstance();
int offset = date.getTimezoneOffset();
logger.info("Calendar Instance - " + cal);
cal.setTime(date);
logger.info("Calendar Instance after setting date - " + cal);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
logger.info("Calendar Instance after setting zeros - " + cal);
return cal;
在上一个日志中,它显示的日期少于实际日期。 如果我删除以下代码,它可以正常工作。
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
用于IST和PST,但不用于其他时区。 请帮忙。