22

「今日」が月曜日から金曜日の間にあるかどうかをチェックするメソッドを作成しようとしています。このために、私はこの行'int day = Calendar.DAY_OF_WEEK;' で実際の日を取得します。その後、ArrayListに日(月曜日、火曜日、水曜日、木曜日、金曜日)を入力します。ここで、実際の日がArrayListにあるかどうかを確認するときに、boolean DAY = trueそれ以外の場合は設定しboolean DAY = falseます。今日と昨日メソッドを試しましたが、常にブール値がfalseに設定されます。

コードが機能するように変更するには何が必要ですか?ここにコードがあります。

コード

                int day = Calendar.DAY_OF_WEEK;
                ArrayList<Integer> daylist = new ArrayList<Integer>();
                daylist.add(Calendar.MONDAY);
                daylist.add(Calendar.TUESDAY);
                daylist.add(Calendar.WEDNESDAY);
                daylist.add(Calendar.THURSDAY);
                daylist.add(Calendar.FRIDAY);

                if (daylist.contains(day)){
                    DAY = true;
                }else{
                    DAY = false;
                }
4

5 に答える 5

56

うわー、それは熱核弾頭で蚊を殺そうとしているようなものです:-)

Javaは、(1.5では) (少なくとも1.8まで変更なしで) SUNDAYthroughの値SATURDAYが連続している(1から7)ことを保証するため、範囲をチェックするだけです。

ただし、これは曜日でDAY_OF_WEEKなく、曜日を取得するためにゲッターに渡されるフィールド番号(値は7)です。Calendar.DAY_OF_WEEK実際の日と一致するのは土曜日のみです。

次のようなコードを使用できます。

Calendar myDate = Calendar.getInstance(); // set this up however you need it.
int dow = myDate.get (Calendar.DAY_OF_WEEK);
boolean isWeekday = ((dow >= Calendar.MONDAY) && (dow <= Calendar.FRIDAY));

これに続いて、からの日が月曜日から金曜日まででisWeekdayある場合にのみ当てはまります。myDate

于 2012-04-12T06:13:45.480 に答える
6

int day = Calendar.DAY_OF_WEEK;代わりに

Calendar cal; // The calendar object
....your other code for getting the date goes here....
int day = cal.get(Calendar.DAY_OF_WEEK);

現在のコードは定数の値を取得するだけCalendar.DAY_OF_WEEKです。

于 2012-04-12T06:13:25.543 に答える
4

これは私が推測するあなたのためのトリックをするはずです。

int day = cal.get(Calendar.DAY_OF_WEEK);
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY){
    DAY = true;
}else{
    DAY = false;
}
于 2012-04-12T06:13:58.540 に答える
2
int day = Calendar.DAY_OF_WEEK;

論理はここで壊れています。CalendarDAY_OF_WEEKは、インスタンスから取得する必要のあるデータのタイプを識別する定数です。

問題の最も簡単な解決策(Calendar.FRIDAY> ...> Calendar.MONDAY以降)は次のとおりです。

Calendar now = Calendar.getInstance();
int day = now.get(Calendar.DAY_OF_WEEK);
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY)
  // do something
于 2012-04-12T06:15:10.987 に答える
1

最初のCalendar.DAY_OF_WEEKは、常に7を与える整数フィールドです。Calendarcal = Calendar.getInstance();のようなカレンダーのインスタンスを作成する必要があります。デフォルトでは、現在のタイムゾーンで現在の日付が表示されます。次に、cal.get(Calendar.DAY_OF_WEEK);を呼び出すことができます。日曜日から土曜日までの任意の日を提供します

今、あなたはこのようなものをチェックすることができます

    if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
         System.out.println("Weekend");
     } else {
        System.out.println("Weekday");
     }

このロジックを問題に適用できます!!

于 2012-04-12T06:24:17.613 に答える