特定の月/年の最初の月曜日になる日を取得したい。
私が持っているもの:
基本的に2つのint変数があり、1つは年を表し、もう1つは月を表します。
私が欲しいもの:
今月の最初の月曜日、できればint値または整数値として知りたいです。
例えば:
私は2014年と1日(1月)を持っていますが、今月の最初の月曜日は6日だったので、6を返したいと思います。
問題:
私はそれができると思っていましたCalendar
が、年と月しか利用できないカレンダーを設定するのにすでに問題があります。さらに、月/年の最初の月曜日を実際に返す方法がわかりませんCalendar
。
私はすでにこれを試しました:
Calendar cal = Calendar.getInstance();
cal.set(this.getYear(),getMonth(), 1);
int montag = cal.getFirstDayOfWeek();
for( int j = 0; j < 7; j++ ) {
int calc = j - montag;
if( calc < 0 ) {
calc += 6;
}
weekDays[calc].setText(getDayString(calc));
}
getFirstDayOfWeek()
現在のロケールの開始として使用される日を返します。月曜日の初日を考える人もいれば、日曜日を考える人もいます。
あなたのようなこのルックスだけのためにそれを設定する必要がありますDAY_OF_WEEK = MONDAY
し、DAY_OF_WEEK_IN_MONTH = 1
それはあなたの月の最初の月曜日あげようとして。その年に同じことを行うには、最初にMONTH
値を設定してからJANUARY
上記を繰り返します。
例:
private static Calendar cacheCalendar;
public static int getFirstMonday(int year, int month) {
cacheCalendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
cacheCalendar.set(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
cacheCalendar.set(Calendar.MONTH, month);
cacheCalendar.set(Calendar.YEAR, year);
return cacheCalendar.get(Calendar.DATE);
}
public static int getFirstMonday(int year) {
return getFirstMonday(year, Calendar.JANUARY);
}
これをテストする簡単なJUnitは次のとおりです:http://pastebin.com/YpFUkjQG
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加