目前在做一个计算员工出勤天数的东西,数据库中有每次请假的天数(先不考虑跨月的情况)(有一个员工一个月请假两次的情况,就是有两条记录,分别对应每次请假),要用java实现算出每个月的出勤天数(每个月的天数减去周末减去请假天数),该怎么实现呢?困扰:怎么区分这次请假记录是不是这个月的? 反正大概就是以上意思,请大家帮帮我,有思路但说不清楚的,可以留下联系方式,谢谢你们了

解决方案 »

  1.   

    LZ能不能把问题更清楚地说明一下,比如
    请假表的结构是什么样的?
    每个月的天数减去周末减去请假天数->要不要考虑小节日(比如端午,中秋)
      

  2.   

        // 2008/01
        Date[] d1 = new Date[]{new Date(2007-1900,12-1,29),new Date(2008-1900,1-1,5)};
        Date[] d2 = new Date[]{new Date(2008-1900,1-1,29),new Date(2008-1900,2-1,1)};
        Calendar c = Calendar.getInstance();
        c.setTime(new Date(2008-1900,1-1,1));
        int rtn = 0;
        while(c.get(Calendar.MONTH )== 0){
         int week = c.get(Calendar.DAY_OF_WEEK);
         Date d = c.getTime();
         c.add(Calendar.DATE, 1);
         if(d.compareTo(d1[0])>=0 && d.compareTo(d1[1])<=0) continue;
         if(d.compareTo(d2[0])>=0 && d.compareTo(d2[1])<=0) continue;
         if(week == 1 || week == 7) continue;
         rtn++;
        }     System.out.println(rtn);
      

  3.   

    我刚写过计算工作日的方法,
    应该是
    先判定这些天是不是星期6,7
     再判定这些天是不是你设定的假期或请假日之间的天
      如果都不是,那么天数+1
    多个工作日或假期的话,可以用循环判定
    都符合,天数+1
    不然break