2011年04月06日

西暦year年month月の第num day_of_month曜日の日にちを求める

ニッチな感じですが。
例えば、2011年4月の第4日曜日の日にちを求めたい、という時の処理

System.out.println(getTargetDay(2011, Calendar.APRIL, Calendar.SUNDAY, 4));

24
となります。


/**
* 西暦year年month月の第num day_of_month曜日の日にちを求める
*
* @param year
* 西暦
* @param month
* Calendar.JANUARY〜
* @param day_of_month
* Calendar.SUNDAY
* @param num
* 1〜
* @return
*/
public static int getTargetDay(int year, int month, int day_of_month, int num) {

Calendar cal = Calendar.getInstance();

// 指定年月の1日の曜日を取得
cal.set(year, month, 1);
int wday = cal.get(Calendar.DAY_OF_WEEK);

// 当月の1日の曜日(wday)と、指定曜日(day_of_month)を比較して処理分け
return wday > day_of_month
? (7 * num + 1) - (wday - day_of_month)
: (7 * (num - 1) + 1) + (day_of_month - wday);
}
posted by 台北猫々 at 22:49| Comment(0) | TrackBack(0) | 技術メモ(Java)