web-dev-qa-db-ja.com

DAY_OF_WEEKが月曜日から金曜日の間にあるかどうかを確認します

「今日」が月曜日と金曜日の間にあるかどうかを確認するメソッドを作成しようとしています。このために私はこの行で取得します'int day = Calendar.DAY_OF_WEEK;'実際の日。その後、ArrayListに曜日(月曜日、火曜日、Wendsday、木曜日、金曜日)を入力します。実際の日が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;
                }
18
safari

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

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

しかしながら、 DAY_OF_WEEKnot曜日ではなく、ゲッターに渡されてretrieve曜日。唯一の時間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が真になります。

51
paxdiablo

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の値を取得するだけです。

6
Ken Y-N

これは私があなたのためのトリックを行う必要があります。

int day = cal.get(Calendar.DAY_OF_WEEK);
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY){
    DAY = true;
}else{
    DAY = false;
}
3
erbsman

最初の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");
     }

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

1
RP-
int day = Calendar.DAY_OF_WEEK;

ロジックはここで壊れています。 DAY_OF_WEEKは、Calendarインスタンスから取得する必要があるデータのタイプを識別する定数です。

あなたの問題の最も簡単な解決策は(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
1
afk5min