問題タブ [java.util.calendar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 異なる Android バージョンでの java.util.GregorianCalendar クラスの奇妙な動作
Android アプリケーションでカレンダーを作成しています。カレンダーの最初の日は、日曜日または月曜日です。ロケールによって異なります。java.util の奇妙な動作。さまざまな Android バージョンのGregorianCalendarクラス:
クラス コンストラクター (new GregorianCalendar(1994, 3, 1), Calendar.SUNDAY) を設定します。Android 4.4、5.0 Logcat の結果:
Android 8.0 Logcat の結果:
結果を見るとわかるように、異なる曜日 (26 と 27) で、異なる曜日に対応しています。ただし、カレンダー オブジェクトの初期化を変更した場合:
結果は、Android のすべてのバージョンで TRUE になります。
junit テストでは、結果はすべての場合(27 および SUNDAY)で正しいです。コードからログを削除し、次を確認します。
1993 年 4 月、1992 年 4 月の動作も。私はすでに私の脳を壊しました。
java - Java: GregorianCalendar の奇妙な出力
私はJavaが初めてで、次のコードで昨日の日付を取得しようとしています:
私が得ている出力は次のとおりです。
325-XI-2018
私は何を間違っていますか?
java - Calendar.getTime が間違った日付を返す
をJCalendar
使用して新しく選択した日付を取得する propertyChangeListener がありますCalendar newValue = (Calendar) evt.getNewValue()
。古い日付が 31 で、新しく選択した月が 30 日のうちの 1 つである場合、その値を取得しようとすると、newValue.getTime()
誤った日付が返されます (JCalendar 1.2 では古い月の 1 日、Jcalendar 1.4 では古い月の 30 日) )。を実行するsetLenient=true
と、 がスローされError: java.lang.IllegalArgumentException: MONTH
ます。
古い日付と新しい日付と月を確認し、要件に従って調整する方法はありますか?
コードは次のとおりです。
例: 現在選択されている日付 -> 2018 年 12 月 31 日カレンダーに戻る ->YEAR=2018,MONTH=11,WEEK_OF_YEAR=48,WEEK_OF_MONTH=1,DAY_OF_MONTH=31
月を 11 月のカレンダーに変更すると、YEAR=2018,MONTH=10,WEEK_OF_YEAR=1,WEEK_OF_MONTH=6,DAY_OF_MONTH=31
実際には正しくありません (10 月 (11 月) の 31 day_of_month はありません)。JCalendar では 12 月 1 日が選択されます。ここで 11 月 30 日に選択してもらいたいです。
問題は、propertyChangeListener が 2 回呼び出されることです。私の日付が 12 月 31 日で、11 月 30 日に設定したとします。最初は日付が 12 月 30 日に変更され (11 月の範囲に入ると思います)、2 回目は日付が 11 月 30 日に変更されます。私は evt.getNewValue() のみを出力しますが、他のメソッドを呼び出して日付を設定しようとすると、12 月 30 日で止まってしまいます!