私は、日付と時刻を保持する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.
興味深い。関連コードを掲示し、支援のために出力してください。 –
私はいくつかのサンプルコードで質問を更新しました。これを考慮していただきありがとうございます。 – Karthik
これは、Microsoft Windowsの問題の可能性があります。アップデートシーケンスをフラッシュするか、OSを再インストールしてそのアップデートを元に戻す必要があるPCがあります。 XPシステムで運用モードで稼働していますか?あなたは他のさまざまなOSで実行しようとしましたか? Mac、Linux、Win 7? –