首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT数据格式

GWT数据格式
EN

Stack Overflow用户
提问于 2011-12-20 22:24:38
回答 1查看 5.4K关注 0票数 2

我有一个定制的GWT小部件,它是两个文本框的组合,一个用来保存日期,另一个用来保存时间。当我输入日期04/09/1956 12:00 AM (在date小部件中)时,在我的小部件内部的ValueChangeHandler中,我通过GWT的DateTimeFormat类的format()方法运行它,该方法接收日期和时区信息,并给我一个格式化的日期字符串,在显示时是用户友好的,然后根据该小部件中的日期设置时间。

问题是,当我把日期放得不太老(我观察到的日期不比1981年的日期大)时,似乎一点问题也没有。在我的例子中,当我输入比1956年更早的日期时,会出现一些奇怪的夏令储蓄逻辑,它把字符串的格式调整了1小时,给了我04/08/1956 11:00的下午11:00,而不是04/09/1956 12:00。尽管date对象仍然表示我想要的日期,但格式化的字符串会被不同的日期表示形式混淆。

这是问题是重复性的,只有当我运行的应用程序在生产模式。当我在我的机器上以托管模式在本地运行它时,我根本没有看到这个问题。这是最糟糕的部分。

我了解到,当我们在生产模式下运行时,GWT从名为noCache.js的javascript文件中读取,而不是在托管模式下运行Web/lib文件夹。

此外,我在其他几个地方通过GWT的格式化程序运行java.util.Date对象,其中我手头有一个日期,但从来没有这个问题……当我在ValueChangeHandler中运行它时,它就会出现。

以前有没有人遇到过这种奇怪的行为?

好的。下面是示例代码:

代码语言:javascript
复制
Date date = new Date();
date.setYear(1956 - 1900);
date.setMonth(3);
date.setDate(9);
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);

// date here is 04/09/1956 12:00 AM

DateTimeFormat dateTimeFormat = new DateTimeFormat(somePattern); //pattern is a string       //which represents which pattern you want to use

String formattedDateString = dateTimeFormat.format(date, timeZone); // timeZone is an  //instance of com.google.gwt.i18n.client.TimeZone

// formattedDateString is 04/8/1956 11:00 PM. The time got pushed back by one hour.
EN

回答 1

Stack Overflow用户

发布于 2011-12-25 02:03:18

支持1987的夏令储蓄。这就是为什么该年之前的任何日期都没有正确显示的原因。在维基百科查一查

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8582760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档