JAVA 如何取得某月中的某一周的第一天和最后一天的日期。

解决方案 »

  1.   

    /**
     * 根据输入的年月周数来取该周首天
     * @param year 年份(>0)
     * @param month 月份(1-12)
     * @param week 当月周数(1-5)
     * @return 该周第一天(周日)
     */
    public static void getFirstDayByMonthWeek(int year,int month,int week){
    if (year <= 0){
    System.out.println("年份要大于0!");
    return;
    }
    if (month < 1 || month > 12){
    System.out.println("月份要[1-12]!");
    return;
    }
    if (week < 1 || week > 5){
    System.out.println("周要[1-5]!");
    return;
    }
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month - 1);
    c.set(Calendar.WEEK_OF_MONTH,week);
    //取得当月最后一天
    int lastday = getTheLastDay(year,month);
    if (lastday <= (week-1)*7){
    System.out.println("该月没有第[" + week + "]周!");
    return;
    }
    //取得该周第一天的weekday(周日=1)
    int firstDayofweek = c.get(Calendar.DAY_OF_WEEK_IN_MONTH);
    int lastDayofweek = c.get(Calendar.DAY_OF_WEEK_IN_MONTH) + 6;

    //该周第一天日期
    Calendar c1 = Calendar.getInstance();
    c1.set(Calendar.YEAR, year);
    c1.set(Calendar.MONTH, month - 1);
    c1.set(Calendar.WEEK_OF_MONTH,week);
    c1.set(Calendar.DAY_OF_WEEK, firstDayofweek);
    Date d1 = new Date(c1.getTimeInMillis());
    System.out.println("该周第一天是[" + df.format(d1) + "]");

    //该周最后一天日期
    Calendar c2 = Calendar.getInstance();
    c2.set(Calendar.YEAR, year);
    c2.set(Calendar.MONTH, month - 1);
    c2.set(Calendar.WEEK_OF_MONTH,week);
    c2.set(Calendar.DAY_OF_WEEK, lastDayofweek);
    Date d2 = new Date(c2.getTimeInMillis());
    System.out.println("该周最后一天是[" + df.format(d2) + "]");
    }
    测试数据:
    getFirstDayByMonthWeek(2007,4,5);
    输出:
    该周第一天是[2007-04-29]
    该周最后一天是[2007-05-05]
      

  2.   

    全部在java.uitl.Calendar类中有实现,好好参照API文档就能实现。我奇怪,坛子里很多做java开发的难道不看API文档?
      

  3.   

    参考http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/util/GregorianCalendar.html
      

  4.   

    中间两句写错了:改成如下:
    //取得该周第一天的weekday(周日=1)
    int firstDayofweek = c.getFirstDayOfWeek();
    int lastDayofweek = firstDayofweek + 6;多谢 shan1119(大天使,卐~解!) ( ) 信誉:101    Blog   加为好友  2007-04-13 16:12:54  得分: 0  指出,我理解错你的意思了^_^
      

  5.   

    如果要取得一个月的第一天的0点的时刻,取得的参数与datetime.now一样,如何做到啊。