2010-02-11 71 views
2

我使用com.google.gwt.i18n.client.timezone尝试显示日期(与服务器一样),但GWT会自动将当前时区添加到格式化日期中,即显示错误的日期在不同的时区。GWT TimeZone偏移是否向后偏移?

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

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

从服务器的偏移量是+11小时(因为它应该是),但是当我尝试用这个偏移量格式化日期时,我得到错误的日期,所以我需要使用负偏移量。

为什么默认时区错误?

回答

3

当你得到一个日期(特别是如果你解析一个日期),请确保你指定了时区。 GWT的DateTimeFormat.parse仅支持“RFC格式”时区,例如太平洋时间的-0800。如果您的服务器正在向客户端发送字符串日期,请确保它包含此格式的时区。

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

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

+0

感谢Dominic,我从服务器(不是字符串)使用Date对象的格式化方法以及从服务器传递过来的时区。根本没有解析发生。 – RodeoClown 2010-02-11 00:58:36

+0

您可以检查从服务器接收到的Date对象中的数据吗?那里有什么?另外,为了健全性检查,您使用浏览器的系统时区是什么? – 2010-02-11 02:16:21

+0

日期中的时区偏移量为-660分钟(使用客户端的时区)。当我得到从服务器的偏移量是660分钟。乐趣:) – RodeoClown 2010-02-11 04:05:17