【问题标题】:Is the GWT TimeZone offset backwards?GWT TimeZone 是否向后偏移?
【发布时间】:2010-02-11 00:31:49
【问题描述】:

我正在使用 com.google.gwt.i18n.client.timezone 尝试显示日期(如在服务器上),但 GWT 在格式化时自动将当前时区添加到日期,这意味着错误的日期是显示在不同的时区。

为了解决这个问题,我将服务器的时区偏移量发送给客户端并在格式化时使用它。

我住在澳大利亚,当前时区是 +11 GMT/UTC,但是当我格式化日期时显示的默认时区是 -11 GMT。

与服务器的偏移量为 +11 小时(应该如此),但是当我尝试使用此偏移量格式化日期时,我得到了错误的日期,因此我需要改用负偏移量。

为什么默认时区不对?

【问题讨论】:

    标签: gwt timezone


    【解决方案1】:

    在获取日期时(尤其是在解析日期时),请确保指定时区。 GWT 的 DateTimeFormat.parse 仅支持“RFC 格式”时区,类似于太平洋时间的 -0800。如果您的服务器以字符串形式向客户端发送日期,请确保它包含此格式的时区。

    然后,当您将日期转换为字符串以将其呈现给用户时,请确保使用指定 TimeZone 的 DateTimeFormat.format 的重载并传递您希望显示日期的时区(时区服务器,在你的情况下。)

    默认情况下,日期以用户系统设置的时区显示。在我写这篇文章时,在 GWT 中设置默认时区(以便您可以忽略时区并在服务器的时区中执行所有操作)是 an open issue (3489)

    【讨论】:

    • 谢谢多米尼克,我正在使用格式方法与来自服务器的日期对象(不是字符串)和我也从服务器传递的时区。根本没有进行解析。
    • 您可以检查从服务器接收到的 Date 对象中的数据吗?里面有什么?另外,为了健全性检查,您使用浏览器的系统上的时区是什么?
    • 日期的时区偏移量为-660分钟(使用客户端的时区)。当我从服务器获得偏移量时,它是 660 分钟。有趣:)
    • 看起来服务器正在发送一个日期,并且该日期被存储为 UTC 日期(因此客户端上的偏移量为 -660。)服务器位于哪个时区?只是为了确认:那是您想要显示日期的时区?
    • 服务器在澳大利亚东部标准时间,意味着此时 +11,夏令时结束时 +10。是的,这是我想要显示日期的时区。(顺便说一句 - 我稍后会投票,只是留下它,所以问题暂时被列为未回答)
    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 2018-09-06
    • 2015-03-11
    • 1970-01-01
    • 2012-10-19
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多