我在这里读了很多帖子:GWT日期处理.
特别是与我打成一线的是这一个
无论如何,我正在努力的项目需要能够将天,小时,分钟间隔显示为网格中的标签.我的团队采用了一种方法,所有日期/时间实例都以ISO8601字符串格式从服务器传递给客户端.客户端应遵守服务器时区.商业用例是所有日期/时间实例都处于"市场时间",因此访问该应用程序的任何浏览器都将在"市场时间"时区中看到并使用日期,该时区恰好是GMT-05:00(如果夏令时有效)或GMT-06:00(如果标准时间有效).
我在Github上发布了一些来源,这里:
https://github.com/fastnsilver/gwt-datehandling-example
尤其...
和GWTTestCase
希望有人能够盯着我们用于日期处理的公用事业(和测试)并帮助我们看到我们没有看到的东西.
编辑
基本问题是CSTimeUtil#hoursInDay(Date)在生产模式中没有正确计算"过渡日"此方法由其他方法(如CSTimeUtil#dateToHour(Date)和CSTimeUtil#labelsForDay(Date))使用.
我已经使用当前的实现部署了我们的应用程序,CSTimeUtil它似乎工作,但并不完全.我真的对备用测试结果感到困惑,例如,mvn gwt:test在Windows上的GWT模式或生产模式下运行,其中OS时区被设置为除美国GMT-05:00或以外的各种时区GMT-06:00.
根据安德烈的一些提示以及一些严肃的血,汗和泪,我自己想出了这个.我已经更新了Github中的代码,所以如果你很好奇,那就去看看吧.
基础:
DateTimeFormat.getFormat("yyyy-MM-ddTHH:mm:ss.SZZZZ")到format和parse日期java.util.Date"在市场时间"中检索GMT前缀时区信息DateTimeFormat(Date, TimeZone),其中TimeZoneparam设置为TimeZone.createTimeZone(TZ_CONSTANTS_INSTANCE.americaChicago())和时区字符串检索TimeZone.getISOTimeZoneString(Date)generateDay(Date, int)或小时generateHour(Date, int)必须考虑到,如果在"过渡日"发生,则增量或减量会触发时区偏移的变化.| 归档时间: |
|
| 查看次数: |
7061 次 |
| 最近记录: |