public static void main(String[] args) { Calendar c_begin = new GregorianCalendar(); Calendar c_end = new GregorianCalendar(); DateFormatSymbols dfs = new DateFormatSymbols(); String[] weeks = dfs.getWeekdays(); c_begin.set(2020, 0, 1); //Calendar的月从0-11,所以4月是3. c_end.set(2020, 11, 31); //Calendar的月从0-11,所以5月是4. int count = 1; /* c_begin.add(Calendar.DAY_OF_MONTH,1); c_begin.add(Calendar.DAY_OF_YEAR,1); c_begin.add(Calendar.DATE,1); c_end.add(Calendar.DAY_OF_MONTH,1); c_end.add(Calendar.DAY_OF_YEAR,1); c_end.add(Calendar.DATE,1); */ /* 就单纯的add操作结果都一样,因为都是将日期+1,区别就是在月的日期中加1还是年的日期中加1 但是Calendar设置DAY_OF_MONTH和DAY_OF_YEAR的目的不是用来+1 将日期加1,这通过cal1.add(Calendar.DATE,1)就可以实现 DAY_OF_MONTH的主要作用是cal.get(DAY_OF_MONTH),用来获得这一天在是这个月的第多少天 Calendar.DAY_OF_YEAR的主要作用是cal.get(DAY_OF_YEAR),用来获得这一天在是这个年的第多少天。 DAY_OF_WEEK,用来获得当前日期是一周的第几天*/ c_end.add(Calendar.DAY_OF_YEAR, 1); //结束日期下滚一天是为了包含最后一天 while (c_begin.before(c_end)) { System.out.println("第" + count + "周 日期:" + new java.sql.Date(c_begin.getTime().getTime()) + "," + weeks[c_begin.get(Calendar.DAY_OF_WEEK)]); if (c_begin.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { count++; } c_begin.add(Calendar.DAY_OF_YEAR, 1); } }