背景:每个月第一个周一作为第一周
/**
* 获取月首个周一日期
* @param monthStr
* @return
*/
public static String findFirstMonthMondayDate(String monthStr) {
try {
Calendar cal = Calendar.getInstance();
Date firstMonthMondayDate = format.parse(monthStr + "01");
cal.setTime(firstMonthMondayDate);
while (true) {
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w != 1) {
cal.add(cal.DATE, 1);
firstMonthMondayDate = cal.getTime();
cal.setTime(firstMonthMondayDate);
} else {
return format.format(cal.getTime());
}
}
} catch (ParseException e) {
// TODO Auto-generated catch block
System.out.println("【DateUtil】findFirstMonthMondayDate:错误信息:" + e.getMessage());
}
return "-1";
}
/**
* 写入日期周数表
* @param monthStr
*/
public static void getDayWeekNum(String monthStr) {
Calendar cal = Calendar.getInstance();
try {
String firstMonthMondayDate=findFirstMonthMondayDate(monthStr);
System.out.println("【DateUtil】月份:"+monthStr+"第一个周一日期为:"+firstMonthMondayDate);
int dayNum=Integer.parseInt(firstMonthMondayDate.substring(6));
System.out.println("【DateUtil】月份:"+monthStr+"第一个周一在第"+dayNum+"天");
cal.setTime(format.parse(firstMonthMondayDate));
int monthMaxday=cal.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("【DateUtil】"+monthStr+"月最大天数为"+ monthMaxday+" 天");
int last_cal_day=monthMaxday-dayNum+1;
System.out.println("【DateUtil】"+monthStr+"月第一个周一后剩余天数:"+last_cal_day+"天(包括第一个周一)");
int weekNums=(int)Math.ceil((double)last_cal_day/WeekDay);
int monthWeekDay=WeekDay*weekNums;
System.out.println("【DateUtil】"+monthStr+"月从第一个周一算有:"+monthWeekDay+"天(包括第一个周一)");
List<String>dayList=new ArrayList();
for(int i=1;i<=monthWeekDay;i++) {
dayList.add(format.format(cal.getTime()));
cal.add(cal.DATE, 1);
Date MonthWeekDate = cal.getTime();
cal.setTime(MonthWeekDate);
}
for(int t=0;t<dayList.size();t++) {
int weekNum=t/7+1;
DBManager.insertDateTable(monthStr,dayList.get(t).toString(),String.valueOf(weekNum));
System.out.println(dayList.get(t)+"\t"+"所在周:"+weekNum);
}
} catch (ParseException e) {
// TODO Auto-generated catch block
System.out.println("【DateUtil】getDayWeekNum:错误信息:" + e.getMessage());
}
//System.out.println("日期包括:"+format.format(cal.getTime())+"第"++"周");
}