我在客户端(浏览器)上使用 GWT,在服务器上使用 Joda Time。我想执行一些以请求进入的日期(即 00:00:00 到 23:59:59)为界的数据库查找,时间边界基于用户(即浏览器)的时区。
所以我让 GWT 代码new java.util.Date()
获取请求的时间,并将其发送到服务器。然后我像这样使用 Joda Time:
new DateTime(clientDate).toDateMidnight().toDateTime()
当然麻烦的是toDateMidnight()
,在没有指定TimeZone的情况下,会使用系统(即服务器)的TimeZone。我一直在尝试找到一种简单的方法将 TimeZone 从浏览器传递到服务器,但运气不佳。在 GWT 中,我可以通过以下方式获得 GMT 偏移量:
DateTimeFormat.getFormat("Z").fmt(new Date())
这会导致类似“-0400”的结果。但是 Joda TimeDateTimeZone.forID()
需要格式为“America/New_York”的字符串,或小时和分钟的整数参数。当然,我可以将“-0400”解析为 -4 小时 0 分钟,但我想知道是否没有更直接的方法可以做到这一点。