2012-04-12 2 views
15

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

コードを変更するにはどうすればよいですか?ここにコードがあります。

コード

   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; 
       } 
+0

dayがCalendar.MONDAY(値2)とCalendar.FRIDAY(値6)の間にあるかどうかを確認できません。 –

+0

DAY_OF_WEEKは、5日の – safari

+1

のいずれかでなければなりません。そのため、Calendar.get(Calendar.DAY_OF_WEEK)が必要です。 – L7ColWinters

答えて

38

うわー、それは(少なくとも変わらず最大1.8SATURDAY通じSUNDAYの値が(1〜7)連続していることを

のJava guarantees (in 1.5) :-)熱核弾頭を持つ蚊を殺すためにしようとするようなものです範囲を調べるのは簡単なことです。

しかし、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)); 

isWeekdaymyDateから日が金曜日の包括月曜だった場合に限り、真となります。

+1

なぜ1から始まるのですか?これは0から始める必要があります。これは 'while((today = ++ today%7)!= startingPoint'のような表現をするのがもっと厄介です。 – likejiujitsu

+3

@likejiujitsu:私はそれがuber-nerdsフェンスの_other_側から、日付を出力するときに連続して 'tm_mon'を追加しなければならないすべての私たちの貧弱なCのコーディング担当者:-)それは十分に簡単ですあなたのケースは 'while(今日=(今日%7)+ 1)!= startingPoint)'ですが、それについて少し考える必要があります。 – paxdiablo

5

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の値を取得する必要があります。

+0

正解! 正常に動作させるには、これは重要です! – cyberPrivacy

2

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

int day = cal.get(Calendar.DAY_OF_WEEK); 
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY){ 
    DAY = true; 
}else{ 
    DAY = false; 
} 
1
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

まずCalendar.DAY_OF_WEEKのは整数フィールドです常にあなたはあなたが作成する必要があり7.与えますCalendarのようなCalendarのインスタンス。cal = Calendar.getInstance();デフォルトでは、現在のタイムゾーンで現在の日付が表示されます。 次に、cal.get(Calendar.DAY_OF_WEEK)を呼び出すことができます。これは、今、あなたはのようなものを確認することができますあなたの日曜日とSat'day

間の任意の日を与えるあなたは、あなたの問題にこのロジックを適用することができます

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

この!!

関連する問題