怎么计算出2个日期之间有多少工作日?
有什么算法?

解决方案 »

  1.   

    http://www.cnblogs.com/l_dragon/archive/2005/08/23/221036.html
    C#版的
    可能对你有启发!
      

  2.   

    工作日?Oh,my god!两个日期之间有多少天可以知道,有多少个工作日.....这....在Calendar中有方法可以知道一个日期是星期几.然后算出两个日期之间的间隔天数,再按每周七天去做处理吧.
      

  3.   

    如果只要求算出周末的话,比较简单。
    public class testWorkTime { public static void main(String[] args) throws ParseException {
    //设置时间格式
    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
    //开始日期
    Date dateFrom = dateFormat.parse("2007/07/01");
    //结束日期
    Date dateTo = dateFormat.parse("2007/08/01");
    //工作天数
    int workdays = 0;  while(dateFrom.before(dateTo)){
      Calendar cal = Calendar.getInstance();
      //设置日期
    cal.setTime(dateFrom);
    if((cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY)
    &&(cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY)){
    //进行比较
    workdays++;
    }
    //日期加1
    cal.add(Calendar.DAY_OF_MONTH,1);
    dateFrom = cal.getTime();
    cal=null;
    }
      System.out.println("工作天数是:" + workdays);
    }
    }
      

  4.   

    周末+公休日
    package datespan;import java.util.Calendar;
    import java.util.GregorianCalendar;
    import java.util.Locale;
    import java.util.Date;
    import java.text.SimpleDateFormat;public class DateSpan 
    {
    /**
     * 计算两个日期的工作日
     * @param dtFrom 开始时间
     * @param dtTo 结束时间
     * @param holidayFrom 公休日开始时间
     * @param holidayTo 公休日结束时间
     * @return 工作日的天数
     */
    public static int getWorkDate(Date dtFrom,Date dtTo,Date holidayFrom,Date holidayTo)
    {
    if(dtFrom.after(dtTo))
    {
    Date dt3=dtFrom;
    dtFrom=dtTo;
    dtTo=dt3;
    }
    int count=0;
    long returncount=((((dtTo.getTime()-dtFrom.getTime())/1000)/60)/60)/24;
    for(int i=0;i<returncount;i++)
    {     Calendar cal=Calendar.getInstance();
        cal.setTime(dtFrom);
        if(cal.get(Calendar.DAY_OF_WEEK)!=Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK)!=Calendar.SUNDAY)
        {
         if(holidayFrom.after(cal.getTime())||holidayTo.before(cal.getTime()))          
         count++;
        
        }
        cal.add(Calendar.DAY_OF_MONTH, 1);
        dtFrom=cal.getTime();
        cal=null;
        
    }
    return count;
    }
      /**
     * @param args
     */
    public static void main(String[] args) 
    {
    try
    {
    SimpleDateFormat format=new SimpleDateFormat("yy-MM-dd");
    Date dt1=format.parse("2008-10-12");
    Date dt2=format.parse("2008-12-12");
    Date dt3=format.parse("2008-10-15");
    Date dt4=format.parse("2008-10-20");
    System.out.println(DateSpan.getWorkDate(dt1, dt2,dt3,dt4));

    }
    catch(Exception e)
    {
    e.getMessage();
    }

    }}