【发布时间】:2014-03-28 22:28:48
【问题描述】:
我想显示使用用户时区格式的存储日期(时区为 UTC)(可能因每个用户而异,并存储在配置文件中)。
我想出的解决方案是以下一个,我想知道这是否是最好的方法,或者是否还有其他更简单的解决方案。
时区设置为 UTC:
-Duser.timezone=UTC
Controller、Freemarker-Template、HandlerInterceptor:
控制器:
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping
public String dateTest(Model model){
final Date date = new Date();
model.addAttribute("formattedDate", new SimpleDateFormat("hh:mm:ss").format(date));
model.addAttribute("date", date);
return "test";
}
}
Freemarker-模板:
<#setting time_zone="${currentTimeZone}">
UTC Time: ${formattedDate}<br/>
Localized time for timezone <i>${currentTimeZone}</i>: ${date?time}
处理程序拦截器:
public class TimezoneHandlerInterceptor extends HandlerInterceptorAdapter{
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
//Only for testing, in production something like:
//final String currentUserTimezone = userService.getCurrentUser().getTimezoneId();
final String currentUserTimezone = "Europe/Berlin";
modelAndView.addObject("currentTimeZone", currentUserTimezone);
}
}
输出:
UTC Time: 08:03:53
Localized time for timezone Europe/Berlin: 09:03:53
那么有没有更标准甚至开箱即用的方法来实现相同的结果?感谢您的帮助。
【问题讨论】:
标签: java spring date spring-mvc freemarker