【发布时间】:2011-03-01 09:13:54
【问题描述】:
如何在 jsp 中获取客户端/请求时区?
【问题讨论】:
标签: java javascript jsp timezone
如何在 jsp 中获取客户端/请求时区?
【问题讨论】:
标签: java javascript jsp timezone
很遗憾,此信息未在 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(或应该是),因此您不需要客户的 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"));
显然您可以设置特定的日期/时间格式。
【讨论】: