分享

数据统计如何去除非工作时间(比如下班时间后,星期六,日,节假日)

 smoking_boy 2006-04-16
这是我写的一个java例子,编译运行就可以了,针对你的问题
beginDate和endDate可以自己设定

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.*;

public class TestDate{
  private String beginDate = "2006-01-23";
  private String endDate = "2006-01-27";
 
  protected String saturday(Date beginDate){
    Calendar cld = Calendar.getInstance();
    cld.setTime(beginDate);
    int year = cld.get(cld.YEAR);
    int month = cld.get(cld.MONTH);
    int day = cld.get(cld.DAY_OF_MONTH);
    int dayOfWeek = cld.get(cld.DAY_OF_WEEK);
    int i = 7 - dayOfWeek;
    cld.set(year,month,day+i);
    year = cld.get(cld.YEAR);
    month = cld.get(cld.MONTH);
    day = cld.get(cld.DAY_OF_MONTH);
    return year+"-"+(month<9?"0":"")+(month+1)+"-"+(day<10?"0":"")+day;
  }
   
  /*
  protected int countDays(Date bd,Date ed) {
    long bt = bd.getTime();
    long et = ed.getTime();
    long it = et - bt;
    int i = (int)it/(24*60*60*1000);
    i++;
    System.out.println("i:"+i);
    int days = 0;
    Calendar cld = Calendar.getInstance();
    cld.setTime(bd);
    int year = cld.get(cld.YEAR);
    int month = cld.get(cld.MONTH);
    int day = cld.get(cld.DAY_OF_MONTH);
    int dayOfWeek = 0;
    String leave = null;
    for(int j=0;j<i;j++){
      cld.set(year,month,day);
      dayOfWeek = cld.get(cld.DAY_OF_WEEK);     
      if(dayOfWeek!=1 && dayOfWeek!=7){//此处出去周六和周日
        days++;
      }
      day++;
    }
    return days;
  }//countDays
  */
  public static void main(String[] args) throws java.text.ParseException {
    TestDate td = new TestDate();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date bd = sdf.parse(td.beginDate);
    Date ed = sdf.parse(td.endDate);
    System.out.println(td.saturday(bd));
    /*
    System.out.println(td.countDays(bd,ed));
   
    Calendar cld = Calendar.getInstance();
    cld.setTime(bd);
    System.out.println(cld.get(cld.DAY_OF_WEEK));
    cld.setTime(ed);
    System.out.println(cld.get(cld.DAY_OF_WEEK));
    /*
    long bt = bd.getTime();
    long et = ed.getTime();
    long it = et - bt;
    int i = (int)it/(24*60*60*1000);
    i++;
    int days = 0;
    Calendar cld = Calendar.getInstance();
    cld.setTime(bd);
    int year = cld.get(cld.YEAR);
    int month = cld.get(cld.MONTH);
    int day = cld.get(cld.DAY_OF_MONTH);
    int dayOfWeek = 0;
    String leave = null;
    for(int j=0;j<i;j++){           
      day++;
      cld.set(year,month,day);
      dayOfWeek = cld.get(cld.DAY_OF_WEEK);
      System.out.println(dayOfWeek);
      if(dayOfWeek==1||dayOfWeek==7){
        leave = cld.get(cld.YEAR)+"-"+(cld.get(cld.MONTH)+1)+"-"+cld.get(cld.DAY_OF_MONTH);
        System.out.println(leave);
      }
      if(dayOfWeek!=1&&dayOfWeek!=7){
        days++;
      }
    }
    System.out.println("总天数:"+days);
    /*
    List yy = new ArrayList();
    yy.add("5");
    System.out.println(yy.size());
    TestDate td = new TestDate();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date bd = sdf.parse(td.beginDate);
    Date ed = sdf.parse(td.endDate);
    long bt = bd.getTime();
    long et = ed.getTime();
    long it = et - bt;
    int i = (int)it/(24*60*60*1000);
    i++;
    Calendar cld = Calendar.getInstance();
    cld.setTime(bd);
    int year = cld.get(cld.YEAR);
    int month = cld.get(cld.MONTH);
    int day = cld.get(cld.DAY_OF_MONTH);
    String leave = null;
    for(int j=0;j<i;j++){
      leave = cld.get(cld.YEAR)+"-"+(cld.get(cld.MONTH)+1)+"-"+cld.get(cld.DAY_OF_MONTH);  
      System.out.println(leave);
      day++;
      cld.set(year,month,day);
    }

  */ 
  }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多