cal.set(Calendar.MONTH, month-1);
cal.set(Calendar.DAY_OF_MONTH, 1);
int endDay=cal.getMaximum(Calendar.DAY_OF_MONTH);
//剔除最开始不完整的星期部分
while(cal.get(Calendar.DAY_OF_WEEK)!=first){
cal.add(Calendar.DAY_OF_MONTH, 1);
}
cal.add(Calendar.DAY_OF_MONTH, 7);
while(cal.get(Calendar.DAY_OF_MONTH)<=endDay
&&cal.get(Calendar.MONTH)==month-1){
weekCount++;
cal.add(Calendar.DAY_OF_MONTH, 7);
}
return weekCount;
}
/**
* 计算某年某月横跨的星期的个数,横跨的星期不要求完整
* @param year 指定年
* @param month 指定月
* @return 某年某月横跨的星期个数
* @throws Exception 月份没有在1-12之间
*/
public static int CrossWeekOfMonth(int year,int month) throws Exception{
if(month<1||month>12)
throw new Exception("月份必须在1-12之间!");
GregorianCalendar cal=new GregorianCalendar();
int first=cal.getFirstDayOfWeek();
int weekCount=0;
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1);
cal.set(Calendar.DAY_OF_MONTH, 1);
int endDay=cal.getMaximum(Calendar.DAY_OF_MONTH);
//剔除最开始不完整的星期部分
if(cal.get(Calendar.DAY_OF_WEEK)!=first){
weekCount++;
while(cal.get(Calendar.DAY_OF_WEEK)!=first){
cal.add(Calendar.DAY_OF_MONTH, 1);
}
}
cal.add(Calendar.DAY_OF_MONTH, 7);
&&cal.get(Calendar.MONTH)==month-1){
weekCount++;
cal.add(Calendar.DAY_OF_MONTH, 7);
}
if(cal.get(Calendar.MONTH)==month)
weekCount++;
return weekCount;
}
/*****-----------------格式化操作------------------******/
/*
* 常见的日期格式化字符串有:
* 1.yyyy-MM-dd hh:mm:ss
*/
/**
* (3)将指定日期转化为XXXX年XX月XX日XX时XX分XX秒
* @param date 指定日期
* @return XXXX年XX月XX日XX时XX分XX秒格式的时间字符串
*/
public static String ToChineseStyle(Date date){
GregorianCalendar cal=new GregorianCalendar();
cal.setTime(date);
int year=cal.get(Calendar.YEAR);
int month=cal.get(Calendar.MONTH)+1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);//24小时制
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
return year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒";
}
public static void main(String[] args) throws Exception {
}
}