这东西正好我也做过,不过方法比较土呵呵,我用了java核心编程那本书附带的一个类
corejava.Day,  很容易使用。 
先new 两个Day出来,然后第一个Day不断前进,Day.advance(1),碰到周六周末略去,一直比较到后一个Day为止(*&^

解决方案 »

  1.   

    找不到什么好的方法
    public int getDays(Date sd,Date ed){
        return (ed.getTime() - sd.getTime()) / (24*3600*1000)
    }  这样要是再想去掉节假日就麻烦了
      

  2.   


    c1,c2之间有多少天:
    public int dayDiff(GregorianCalendar c1, GregorianCalendar c2){
    if((c1.get(Calendar.YEAR)==c2.get(Calendar.YEAR)) && 
       (c1.get(Calendar.DAY_OF_YEAR)==c2.get(Calendar.DAY_OF_YEAR)))
       return 0;
    else 
       return (int)
    Math.ceil((Math.abs(c1.getTimeInMillis()-c2.getTimeInMillis()))/(1000*24*3600.0));
    }
      

  3.   

    Date date1 = c1.getTime();
    Date date2 = c2.getTime();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String str1 = sdf.format(date1);
    String str2 = sdf.format(date2);
    date1 = sdf.parse(str1);
    date2 = sdf.parse(str2);
    int nDays = Math.abs((date2.getTime - date1.getTime)/(24 * 60 * 60 *1000));
      

  4.   

    int getWeekDay(Calendar)//得到该日期是星期几
    boolean isWeekEnd(Calendar)
    boolean isHoliday(Calendar)
    int getWeekEndCount(Calendar,Calendar)
    int getHolidayCount(Calendar,Calendar)
    int getValidDayCount(Calendar,Calendar)
      

  5.   

    Calendar c0=Calendar.getInstance();
           c0.set(2003,11,14);
           Calendar c1=Calendar.getInstance();
           c1.set(2002,11,14);
    //-----求两个Calendar: c0,c1相差的天数
           Date ddd1=c0.getTime();
           Date ddd2=c1.getTime();
           long d=ddd1.getTime()-ddd2.getTime();
           d=d/3600/24/1000;     // 毫秒--->天数
      

  6.   

    must determine if c1 and c2 are the same day. 
    c1:2003-11-20-18:23:23
    c2:2003-11-20-00:01:00 
    c1-c2=0c1:2003-11-20-18:23:23
    c2:2003-11-21-00:01:00
    c2-c1=1Test if your algo is right
      

  7.   

    int workDayDiff(c1,c2){
    if(c1.after(c2))
       return  workDayDiff(c2,c1);
    int offset=(dayDiff(c1,c2) % 7)*5;int dw2=c2.get(Calendar.DAY_OF_WEEK);
    int dw1=c1.get(Calendar.DAY_OF_WEEK);
    ....
      

  8.   

    算法:
      首先计算出时间差,以天为单位;整除7得到工作周;关键是剩下那几天的计算,具体算法见测试程序。测试用源代码如下:
    import java.util.Calendar;public class Test {
    public static void main(String args[]){
    Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance();
    long millisPerDay = 1000 * 60 * 60 * 24;
    long diff = millisPerDay * 8;
    c1.setTimeInMillis(System.currentTimeMillis() - diff );
    c2.setTimeInMillis(System.currentTimeMillis());

    long diffInMilliseconds = c2.getTimeInMillis() - c1.getTimeInMillis();
    long diffInDays = diffInMilliseconds / (1000 * 60 * 60 * 24) ;
    long diffInWeeks = diffInDays / 7;
    long workDays = diffInDays / 7 * 5;

             /* 剩下几天的算法 */
    long rem = diffInDays % 7;
    int curDayInWeek = c2.get(Calendar.DAY_OF_WEEK);
    if (rem <= curDayInWeek - Calendar.SUNDAY) 
    workDays += rem;
    else if (rem <= curDayInWeek - Calendar.SUNDAY + 2)
    workDays += curDayInWeek - Calendar.SUNDAY;
    else 
    workDays += rem - 2;

    System.out.println("days:\t" + diffInDays);
    System.out.println("workdays:\t" + workDays);
    }
    }