gpt4 book ai didi

java - GWT 日期格式

转载 作者:行者123 更新时间:2023-11-30 11:48:53 25 4
gpt4 key购买 nike

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

问题是当我输入不太早的日期(我的观察是不早于 1981 年的日期)时,似乎完全没有问题。当我输入早于 1956 年的日期时,有一些奇怪的夏令时逻辑通过将字符串向后调整 1 小时来弄乱我的字符串格式,并给我 04/08/1956 11:00 PM 而不是 04/09/1956 凌晨 12:00。尽管日期对象仍然表示我想要的日期,但格式化的字符串被不同的日期表示搞乱了。

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

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

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

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

好的。这是示例代码:

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.

最佳答案

Windows1987 开始支持夏令时。这就是无法正确显示该年之前的任何日期的原因。查看 Wikipedia

关于java - GWT 日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8582760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com