java 计算两日期之间有多少天双休

如题所述

/**
* 获取2个日期之间周六,周日的天数
* @param startDate
* @param endDate
* @param format
* @return
* @author zhaigx
* @date 2013-3-13
*/
public static int getSundayNum(String startDate, String endDate, String format) {
List yearMonthDayList = new ArrayList();
Date start = null, stop = null;
try {
start = new SimpleDateFormat(format).parse(startDate);
stop = new SimpleDateFormat(format).parse(endDate);
} catch (ParseException e) {
e.printStackTrace();
}
if (start.after(stop)) {
Date tmp = start;
start = stop;
stop = tmp;
}
//将起止时间中的所有时间加到List中
Calendar calendarTemp = Calendar.getInstance();
calendarTemp.setTime(start);
while (calendarTemp.getTime().getTime() <= stop.getTime()) {
yearMonthDayList.add(new SimpleDateFormat(format)
.format(calendarTemp.getTime()));
calendarTemp.add(Calendar.DAY_OF_YEAR, 1);
}
Collections.sort(yearMonthDayList);
int num=0;//周六,周日的总天数
int size=yearMonthDayList.size();
int week=0;
for (int i = 0; i < size; i++) {
String day=(String)yearMonthDayList.get(i);
System.out.println(day);
week=getWeek(day, format);
if (week==6||week==0) {//周六,周日
num++;
}
}
return num;
}
/**
* 获取某个日期是星期几
* @param date
* @param format
* @return 0-星期日
* @author zhaigx
* @date 2013-3-13
*/
public static int getWeek(String date, String format) {
Calendar calendarTemp = Calendar.getInstance();
try {
calendarTemp.setTime(new SimpleDateFormat(format).parse(date));
} catch (ParseException e) {
e.printStackTrace();
}
int i = calendarTemp.get(Calendar.DAY_OF_WEEK);
int value=i-1;//0-星期日
// System.out.println(value);
return value;
}
public static void main(String[] args) {
int i=getSundayNum("2013-03-01", "2013-03-20", "yyyy-MM-dd");
System.out.println(i);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-13
/**
* 求任意两个日期间的休息日
* @param d1 第一个日期
* @param d2 第二个日期
* @return
*/
public static int getWeekends(Date d1, Date d2){
if(d1 == null || d2 == null){
return 0;
}
int count = 0;
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(d1);
c2.setTime(d2);
// 保证第二个时间一定大于第一个时间
if (c1.after(c2)) {
c2.setTime(d1);
c1.setTime(d2);
}
// 当日期c2在日期c1之后退出循环
while(c2.after(c1)){
if(c1.get(Calendar.DAY_OF_WEEK) == 1 || c1.get(Calendar.DAY_OF_WEEK) == 7){
System.out.println(c1.getTime());
count++ ;
}
// 天数加1
c1.set(Calendar.DAY_OF_YEAR, (c1.get(Calendar.DAY_OF_YEAR) + 1));
}
return count;
}
第2个回答  2013-03-13
单纯计算?意义不是很大,因为我国还会调休的