求算法 : 给定年,月份 , 求这个月份的第一个星期一的日期?比如: 参数200912 应该得到 20091207 这个日期.我大致研究了下:
SimpleDateFormat myDateFormat = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.set(2009, 11, 1);
cal.get(Calendar.DAY_OF_WEEK); 我的想法到此为止:
我想的是, cal.get(Calendar.DAY_OF_WEEK); 看这个得到的是不是星期一, 如果是则找到日期,
否则我就要为 cal 加一天, 然后继续 判断.....
然后一直加一天,做判断,直到 找到日期.但是我觉得这样做很不象样.哪位能有好的解决方法?
谢谢~~~
SimpleDateFormat myDateFormat = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.set(2009, 11, 1);
cal.get(Calendar.DAY_OF_WEEK); 我的想法到此为止:
我想的是, cal.get(Calendar.DAY_OF_WEEK); 看这个得到的是不是星期一, 如果是则找到日期,
否则我就要为 cal 加一天, 然后继续 判断.....
然后一直加一天,做判断,直到 找到日期.但是我觉得这样做很不象样.哪位能有好的解决方法?
谢谢~~~
public static Date getDate(int year,int month){
Calendar cal = Calendar.getInstance();
cal.set(year,month-1,1);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
switch(dayOfWeek){
case 1:
cal.add(Calendar.DATE,1);
break;
case 2:
break;
case 3:
case 4:
case 5:
case 6:
case 7:
cal.add(Calendar.DATE, cal.get(Calendar.DATE) + 7 - dayOfWeek + 1);
break;
}
return cal.getTime();
}
public static void main(String args[]) {
//CalendarTest Test=new CalendarTest();
//Test.zhuan();
Scanner sc = new Scanner(System.in);
System.out.println("输入年和月:");
int year = sc.nextInt();
int month = sc.nextInt(); Calendar currentMonth = Calendar.getInstance();
currentMonth.set(year, month - 1, 1);
int firstDay = currentMonth.get(Calendar.DAY_OF_WEEK) - 1;
int num = 1; // 号码
int days = currentMonth.getActualMaximum(Calendar.DATE) + firstDay; // 当前月份的天数 for (int i = 0; i < days; i++) {
if (i % 7 == 0 && i != 0) // 换行
System.out.println();
if (i < firstDay)
System.out.print(" ");
else {
System.out.printf("%3d", num);
num++;
}
} }