如何通过跳过周末增加一天

时间:2017-02-14 10:44:29

标签: java date calendar

如何通过跳过周末增加一天。我的意思是day=Friday然后是day+1=Monday。请看一下我的增量方法,即增加日历日而非工作日

public Date  incDay( Date date){
Calendar cal = Calendar.getInstance(); 
cal.setTime(date); 
cal.add(Calendar.DATE, 1);
return cal.getTime();
}

我需要修改此方法以解决此问题。

更新

我像这样更新我的方法

public Date incDay(Date date){
    final Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    // public final static int FRIDAY = 6;
    final int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
    if (dayOfWeek == Calendar.FRIDAY) {
        cal.add(Calendar.DATE, 3);
    }else{
        cal.add(Calendar.DATE, 1);
    }
    System.out.println(cal.getTime());
    return cal.getTime();
}

主要()

public static void main(String[] args) throws ParseException {

Date d=incBusiness(new Date(2017, 02, 17));//2017/02/18

}

我得到了2017/02/18而不是2017/02/20

2 个答案:

答案 0 :(得分:0)

日历类有常量来检查星期几:

星期五是一周的第6天,做if-else可以解决问题......

    public static void foo() throws ParseException {
    String dateString = "2017/02/17";
    DateFormat df = new SimpleDateFormat("yyyy/MM/dd");// "2017/02/17";
    Date date = df.parse(dateString);
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
    if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY) {
        cal.add(Calendar.DATE, 3);
    } else {
        cal.add(Calendar.DATE, 1);
    }
    System.out.println(cal.getTime());
}

答案 1 :(得分:0)

获取日期实例并添加否。不包括周末的天数。如果提供日期是周末,则将日期设置为下一个星期一。

public Date addDays(Date date, int days){
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);

    //set date to next monday if provided date day is weekend
    //use this section according to your need.
    if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY){
        cal.add(Calendar.DATE,2);
        //days-= 2;
    }else if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
        cal.add(Calendar.DATE,1);
        //days--;
    }

    //add days one by one
    while(days > 0){
        //if current day is friday add 3 days to skip saturday and sunday
        if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY){
            cal.add(Calendar.DATE,3);
        //else add one day
        }else{
            cal.add(Calendar.DATE,1);
        }
        //decrements day counter 
        days--;
    }

    return cal.getTime();
}
相关问题