int getWorkDay(int beginWeekDay,int totalDayNum){
int dayNumber = 0;
int beginDays = 7 - beginWeekDay - 1;
int workDayNum = beginDays > 0 ? beginDays:0;
for(int i = 1; i < 8 ; i++){
if(i < 6){
workDayNum ++;
}
dayNumber++;
if(dayNumber > totalDayNum){
break;
}
i = i % 7;
}
}
上面的代码不一定对
思路是这样的
开始的第一天是星期几能够知道,在知道两个日期之间有多少天就能够算出工作日
比如开始是星期3,总共有15天,那么星期的排布就是:
345671234567123
这样可以使用循环算出工作日了
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @author ly
*/
public class CalWorkDay { public static int workDays(Date d1,Date d2)
{
Date d=d1.before(d2)?d1:d2;
Calendar cal=Calendar.getInstance();
cal.setTime(d);
int count=0;
while(!d.after(d2))
{
int day=cal.get(Calendar.DAY_OF_WEEK);
// System.out.println(d.toString()+" "+day);
if(day<7&&day>1)count++;
cal.add(Calendar.DATE,1);
d=cal.getTime();
}
return count;
}
public static void main(String[] args)
{
DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Date d1=null,d2=null;
try {
d1 = df.parse("2005-11-01");
d2=df.parse("2005-11-26");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(workDays(d1,d2));
}}