2011-12-20 25 views
2

私は、日付と時刻を保持する1つのテキストボックスと2つのテキストボックスの組み合わせであるカスタマイズされたGWT日付 - 時間ウィジェットを持っています。私の日付をウィジェットのValueChangeHandlerに内部的に入力すると、日付とタイムゾーンの情報を取り込むGWTのDateTimeFormatクラスのformat()メソッドを使用して実行します。表示されたときにユーザーフレンドリであるフォーマットされた日付文字列を与え、そのウィジェットの日付に基づいて、その時刻部分に時間を設定します。GWT日付書式設定

問題は、あまりにも古くはない(私の所見は1981年のものより年代が古い)ということに問題はないようです。私が1956年よりも古い年月を私のケースに入れると、私の弦のフォーマットを1時間後に調整して奇妙な夏時間論理があり、04/08/1956 11:00 PMの代わりに04/09/1956 12:00 AM。日付オブジェクトはまだ私が意図した日付を表していますが、フォーマットされた文字列は別の日付表現で台無しです。

これは、生産モードでアプリを実行した場合にのみ問題が再現可能です。ホストされたモードでマシン上でローカルに実行すると、この問題はまったく表示されません。それは最悪の部分です。

GWTは、ホスティングモードのWeb-INF/libフォルダではなく、運用モードで実行したときにnoCache.jsというjavascriptファイルから読み取ります。

また、GWTのフォーマッタを使用して日付を手元に置いていますが、この問題は発生しません。これはValueChangeHandlerで実行するときに発生します。

これまでにこのような奇妙な動作が発生しましたか?

OK。ここではサンプルコードは次のとおりです。年から保存

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. 
+0

興味深い。関連コードを掲示し、支援のために出力してください。 –

+0

私はいくつかのサンプルコードで質問を更新しました。これを考慮していただきありがとうございます。 – Karthik

+0

これは、Microsoft Windowsの問題の可能性があります。アップデートシーケンスをフラッシュするか、OSを再インストールしてそのアップデートを元に戻す必要があるPCがあります。 XPシステムで運用モードで稼働していますか?あなたは他のさまざまなOSで実行しようとしましたか? Mac、Linux、Win 7? –

答えて

1

のWindows対応無し夏時間。このため、その年の前の日付は正しく表示されません。それを確認してくださいWikipedia