【问题标题】:GWT - Obtain Browser Timezone/Timestamp formattingGWT - 获取浏览器时区/时间戳格式
【发布时间】:2012-02-14 08:32:06
【问题描述】:

我使用 GMT/Zulu 时间向我的 GWT 客户端发送时间戳,并指定每个字符串(即 2012-01-19T16:29:18Z 或 GMT 下午 4:29)。如何在本地时区的浏览器中显示这个?所以对于 CST 的我来说,我希望看到上午 10 点 29 分。

如果我不进行格式化,我会得到下午 4:29 的日期,这是我所期望的,如果我使用 TimeZone.createTimeZone(0) 的 TimeZone 对象,我会出于某种原因得到晚上 10:29(不是预期的上午)。我想我应该传入比 0 更有意义的值,但是如何为浏览器运行的位置获取正确的值?

J

【问题讨论】:

  • 这可能很重要,我使用 DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 的 DateTimeFormat 从 REST 响应中解析跨度>

标签: gwt date timezone timezone-offset


【解决方案1】:

您可以使用以下命令获取浏览器中配置的时区偏移:

Date d = new Date();
d.getTimezoneOffset();

它不会给你时区名称,我认为这是不可能的。

您是以时间戳还是字符串形式发送时间?我发现最好的方法是将 UTC 时间戳发送到客户端,然后使用 DateTimeFormat/TimeZone 将它们格式化为我需要的任何区域。但我想如果你正在解析包括偏移量的日期字符串,你最终会得到一个 UTC 时间戳。

【讨论】:

  • 这有帮助。我意识到我的问题是因为 Z (对于 zulu/gmt 时间)没有被解析为日期的一部分,所以它假设服务器响应是在本地时间,把一切都搞砸了。您的回复有助于解决这个问题。
  • 这似乎已被弃用,或者您没有使用java.util.Date
  • 仅供参考 - 这将返回 当前 时区偏移量。也就是说,适用于使用的日期值的偏移量。它可能不是所有日期和时间都适用的偏移量,因为许多时区会根据夏令时改变它们的偏移量。
【解决方案2】:

如果您希望 GWT 客户端代码在浏览器时区中格式化时间,您应该将数据从服务器作为 java.util.Date 对象传递给客户端。

【讨论】:

    猜你喜欢
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2012-08-03
    • 1970-01-01
    • 2017-01-06
    • 2021-10-27
    相关资源
    最近更新 更多