Rog*_*ger 12 java spring servlets spring-mvc
我需要将服务器时间转换为用户的时间,具体取决于他们的时区.
这是通过使用HttpServletRequest对象来确定其时区的最佳方法吗?
Locale clientLocale = request.getLocale();
Calendar calendar = Calendar.getInstance(clientLocale);
TimeZone clientTimeZone = calendar.getTimeZone();
Run Code Online (Sandbox Code Playgroud)
Jon*_*ley 15
遗憾的是,由于客户端不发送数据,因此无法从请求中获取用户的时区.请求对象中的区域设置基于用户的Accept-Language标头.什么是"英语"的正确时区?
另外两种方法:
虽然没有真正好的简单解决方案 - 这就是为什么大多数网站会询问用户的时区,或以相对格式显示日期(例如5小时前).
Bal*_*usC 12
你无法从中得到它HttpServletRequest.信息不存在.
但是,在JavaScript中,您可以按如下方式获取时区偏移量:
var offset = new Date().getTimezoneOffset();
// ...
Run Code Online (Sandbox Code Playgroud)
您可以使用它作为(ajax)参数发送回服务器或在呈现的HTML上应用更改.但是我不会严格依赖于此.它至少应该由最终用户自己配置.