【问题标题】:How to detect the timezone of a client?如何检测客户端的时区?
【发布时间】:2011-03-01 09:13:54
【问题描述】:

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

【问题讨论】:

    标签: java javascript jsp timezone


    【解决方案1】:

    很遗憾,此信息未在 HTTP 标头中传递。

    通常您需要配合 JavaScript 为您获取它。
    网上很多例子,这里有一个http://www.coderanch.com/t/486127/JSP/java/Query-timezone

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        我的一般规则是在任何地方都以 UTC 处理和存储时间,除了在与用户的界面处,您可以在此处转换为本地时间/从本地时间转换。 UTC 的优点是您永远不必担心夏令时调整。

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

        【讨论】:

        • 我有一个要求,我必须下载 pdf 格式的数据。所以需要在pdf中显示用户时区的日期。我该怎么做。
        【解决方案4】:

        对我来说最好的解决方案是将日期/时间作为字符串发送,然后使用服务器的时区进行解析以获取时间戳。时间戳始终是 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"));
        

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

        【讨论】:

          猜你喜欢
          • 2020-01-24
          • 2012-11-29
          • 2016-08-10
          • 2017-02-25
          • 1970-01-01
          • 2016-01-04
          • 1970-01-01
          • 2016-08-06
          相关资源
          最近更新 更多