java获取某个月自然周的个数
private int getWeeks(Integer year, Integer month) {
//天数
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month -1);
System.out.println("天数:" + c.getActualMaximum(Calendar.DAY_OF_MONTH));
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
//月起止时间
DateTime startTime = null;
try {
startTime = DateUtil.beginOfMonth(new SimpleDateFormat("yyyy-MM").parse(year +"-"+ month));
} catch (ParseException e) {
throw new RuntimeException(e);
}
int i = DateUtil.dayOfWeek(startTime);
//月结束时间
/*DateTime endTime = DateUtil.endOfMonth(new SimpleDateFormat("yyyy-MM").parse("2022-01"));
int i1 = DateUtil.dayOfWeek(endTime);*/
// 1表示周日,2表示周一
// 周几: 一 二 三 四 五 六 七
// 参数: 2 3 4 5 6 7 1
//剩下天数: 7 6 5 4 3 2 1
int firstWeek = 0;
switch (i){
case 1 :
firstWeek = 1;
break;
case 2 :
firstWeek = 7;
break;
case 3 :
firstWeek = 6;
break;
case 4 :
firstWeek = 5;
break;
case 5 :
firstWeek = 4;
break;
case 6 :
firstWeek = 3;
break;
case 7 :
firstWeek = 2;
break;
}
int remainingDays = days - firstWeek;
int weeks = (int)Math.ceil((double)remainingDays/7) + 1;
return weeks;
}