Gwt 如何使用服务器时区而不是客户端';s

Gwt 如何使用服务器时区而不是客户端';s,gwt,date,timezone,Gwt,Date,Timezone,我试图在客户端显示一个(java.util.)日期,它会一直使用浏览器的时区,从而根据您查看页面的位置显示不同的日期 如何让格式化程序(DateTimeFormat)使用服务器的时区而不是用户来显示日期 感谢最简单的解决方案(不需要与服务器进行任何通信)就是强制使用特定的时区(服务器所在的时区),如下所示: String pseudoServerTime = DateTimeFormat.getFullTimeFormat().format(new Date(), TimeZone.create

我试图在客户端显示一个(java.util.)日期,它会一直使用浏览器的时区,从而根据您查看页面的位置显示不同的日期

如何让格式化程序(DateTimeFormat)使用服务器的时区而不是用户来显示日期

感谢

最简单的解决方案(不需要与服务器进行任何通信)就是强制使用特定的时区(服务器所在的时区),如下所示:

String pseudoServerTime = DateTimeFormat.getFullTimeFormat().format(new Date(), TimeZone.createTimeZone(TimeZoneConstants.europeWarsaw());

您可以在某处将时区字符串/对象硬编码为
public static final
,这样,如果您移动/更改服务器(GWT编译器将内联该字符串/对象,因此不会影响性能)。

是否会在客户端修改日期?如果没有,在服务器上进行格式化,只发送一个字符串值。最后一件事。GWT中客户端的日期似乎存在一些问题。参考

谢谢Igro-这是我的第一个猜测,尽管我刚刚硬编码了时区偏移。我使用硬编码偏移量的问题是,我们现在处于夏令时(澳大利亚悉尼),当夏令时结束时,时间将再次结束。不要硬编码偏移量。将考虑时区对象和夏令时的硬编码。您好,Carnell,该日期不会在客户端进行修改,但会在表中用于排序,并且格式为“2010年1月31日”,因此将其设置为字符串服务器端将阻止排序工作。现在查看链接。感谢您可以将日期作为字符串传递以供显示,也可以传递用于排序的日期数值。使用Date.getTime()获取日期的长值。唯一糟糕的是,您必须向客户端传递另一个字段,但它应该可以工作。难道您不能只从服务器传递字符串(使用java的SimpleDataFormat)和区域设置,例如:yyyy-MM-dd hh:MM Z,并在客户端上使用此格式,使用GWT的DateTimeFormat创建日期吗。您可以从服务器创建带有时区的日期,也可以将其用于其他目的。