我正在客户端(浏览器)使用GWT,服务器上使用Joda Time。我想执行一些DB查找,限定在请求到达的日期(即从00:00:00到23:59:59),时间范围基于用户(即浏览器)的时区。
因此,我让GWT代码执行
当然问题在于,如果没有指定时区,
因此,我让GWT代码执行
new java.util.Date()
以获取请求时间,并将其发送到服务器。然后我这样使用Joda Time:new DateTime(clientDate).toDateMidnight().toDateTime()
当然问题在于,如果没有指定时区,
toDateMidnight()
会使用系统(即服务器)的时区。我一直试图找到一种简单的方法将浏览器中的时区传递到服务器端,但并没有什么好的办法。在GWT中,我可以使用以下代码获取GMT偏移量:DateTimeFormat.getFormat("Z").fmt(new Date())
这会得到类似于“-0400”的结果。但是Joda Time的DateTimeZone.forID()
希望字符串格式为“America/New_York”,或者一个小时和分钟的整数参数。当然,我可以将“-0400”解析为-4小时和0分钟,但我想知道是否有更简单的方法。
com.google.gwt.user.datepicker.client.CalendarUtil
即可... 不过我不会在GWT之外这样做,希望GWT能尽快在这方面得到改进! - Chris Lercher