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
这样可以使用循环算出工作日了

解决方案 »

  1.   

    我做过,不过是用DELPHI做的,我的思路是:开始日期A,如果A不是星期天则推到星期天,记下推后的天数a,此时开始日期为A1,结束日期B,如果不是星期六则推到星期六,此时结束日期为B1,记下推后的天数b,然后算A1与B1之间有几个星期,然后每个星期有五个工作日,再加上a减去b就是所求的工作日
      

  2.   

    import java.text.DateFormat;
    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));
    }}