求算法 : 给定年,月份 , 求这个月份的第一个星期一的日期?比如: 参数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 加一天, 然后继续 判断..... 
然后一直加一天,做判断,直到 找到日期.但是我觉得这样做很不象样.哪位能有好的解决方法?
谢谢~~~

解决方案 »

  1.   


    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();

      

  2.   


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