繁体   English   中英

如何检测客户端的时区?

[英]How to detect the timezone of a client?

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

不幸的是,此信息未在 HTTP 标头中传递。

通常你需要配合 JavaScript 来为你获取它。
网上到处都是例子,这里是一个http://www.coderanch.com/t/486127/JSP/java/Query-timezone

您无法获得时区,但您可以通过 javascript 从客户端获取当前时间,然后回传。 在服务器端,您可以将该时间转换为 GMT/UTC。 UTC 显示时区。

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

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

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

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

例如,发送“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"));

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM