如何检测客户端的时区?

时间:2010-06-08 20:59:55

标签: java javascript jsp timezone

如何在jsp中获取客户端/请求时区?

4 个答案:

答案 0 :(得分:22)

不幸的是,这些信息不会在HTTP标头中传递。

通常你需要合作的JavaScript来为你取得它 Web上有很多例子,这里有一个http://www.coderanch.com/t/486127/JSP/java/Query-timezone

答案 1 :(得分:1)

你无法获得时区,但你可以从客户端获得当前时间。通过javascript而不是回发。在服务器端,您可以将该时间转换为GMT / UTC。 UTC显示TimeZone。

答案 2 :(得分:1)

如果您只需要本地时区以向用户显示本地时间,我建议您使用Moment.js在UTC中以当地时间表示服务中的所有时间并将其呈现在浏览器中。

我的一般规则是以UTC处理和存储时间,除了与用户的接口,您转换为/从本地时间。 UTC的优势在于您永远不必担心夏令时调整。

请注意,如果您想显示某些内容的年龄(例如“3小时前发布”),您只需将UTC时间戳与当前UTC时间进行比较即可;根本不需要转换为当地时间。

答案 3 :(得分:0)

对我来说最好的解决方案是将日期/时间作为字符串发送,然后解析服务器的时区以获得时间戳。时间戳始终是UTC(或应该是UTC),因此您不需要客户端的TimeZone。

例如,发送“ 10/07/2018 12:45”的解析方式如下:

SimpleDateFormat oD = new SimpleDateFormat();
oD.applyPattern("dd/MM/yyyy HH:mm");
oD.setTimeZone(TimeZone.getDefault()); // ;)
Date oDate = oD.parse(request.getParameter("time"));

显然,您可以设置特定的日期/时间格式。