java计算一段时间内星期一出现的次数

一段时间的格式为:年-月-日(2016-01-01)

比如开始日期为2016-01-01,结束时间为2016-01-31
求这段时间内星期一出现的次数,支持跨年,闰年,闰月
应该是用Calendar 但是我不会写
求大神教我怎么写

String startDate = "2016-02-01";//开始日期
String endDate = "2017-10-31"; //结束日期

    DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");        
    Date bdate;
    int count = 0; //星期一的次数
    try {
        while(true){
            bdate = format1.parse(startDate);
            if(bdate.getTime() <= format1.parse(endDate).getTime()){
                Calendar cal = Calendar.getInstance();
                cal.setTime(bdate);
                if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.MONDAY){
                    count++;
                }
                //后一天
                DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
                Date ldate = df.parse(startDate);
                startDate = df.format(
                        new Date(ldate.getTime() + 1 * 24 * 60 * 60 * 1000))
                        .toString();
            }else{
                break;
            }
        }
    } catch (ParseException e) {
        e.printStackTrace();
    }
    System.out.println("星期一次数:"+count);

要考虑的太多了。得好好想想

时间都是根据系统来的。不用管跨年的闰月的问题。用后时间减去前时间,跨年闰月的系统都有考虑。然后看当前时间星期几,这样就好做了。

http://download.csdn.net/detail/lin_not_for_codes/9756625
这是我写过的关于计算某一天是星期几的代码,免费下载,你可以参考一下,我个人建议敲代码这东西可以学习,但不要完整的照抄,所以你可以借鉴我使用python写的这段代码去补充你自己的代码,加上自己的思考这样最后你写出来才会有收获,不难的

这样的问题前面的那位说的很好

定义两个日期对象。把日期传入,初始化 。getTime()方法 ,获取两个日期相差的毫秒数 再除以 24*60*60*1000.得到两个日期相差的天数。
后面就是获取结束日期是星期几 (天数 --结束日期是星期几)/7+1。

        Calendar calendar = Calendar.getInstance();

        int count = 0;
        for (int i = 1; i <= 31; i++) {
            calendar.set(2016, 1, i);
            if (Calendar.MONDAY == calendar.get(Calendar.DAY_OF_WEEK)) {
                count++;
            }
        }

        System.out.println("星期一出现" + count + "次");

1)用int end=calendar.getActualMaximum(calendar.DAY_OF_MONTH);得到当月的最后一天
2)得到当月一号是星期几,进而求出第一个星期一是d号。
3)d=d+7< end时候n=n+1
4)返回结果