問題タブ [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.

0 投票する
2 に答える
817 参照

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 月の動作も。私はすでに私の脳を壊しました。

0 投票する
2 に答える
66 参照

java - Java: GregorianCalendar の奇妙な出力

私はJavaが初めてで、次のコードで昨日の日付を取得しようとしています:

私が得ている出力は次のとおりです。

325-XI-2018

私は何を間違っていますか?

0 投票する
0 に答える
783 参照

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 日で止まってしまいます!