Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何通过跳过周末来增加一天_Java_Date_Calendar - Fatal编程技术网

Java 我如何通过跳过周末来增加一天

Java 我如何通过跳过周末来增加一天,java,date,calendar,Java,Date,Calendar,我如何通过跳过周末来增加一天。我的意思是如果day=周五那么day+1=周一。请看一下我的增量方法,我增量一个日历日,而不是一个工作日 public Date incDay( Date date){ Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DATE, 1); return cal.getTime(); } 我需要修改此方法以解决此问题 更新: 我像这样更新我的方法 public

我如何通过跳过周末来增加一天。我的意思是如果
day=周五
那么
day+1=周一
。请看一下我的增量方法,我增量一个日历日,而不是一个工作日

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();
}
Main()

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

Calendar类有常数来检查一周中的哪一天:

周五是一周中的第六天,做一个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());
}

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

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();
}

什么c变量表示它没有声明,我有一个错误?如果它是cal…typo?并且==FRIDAY不接受它,我有erroryeap。。。它必须是“cal”作为日历是的..它应该工作..我看不到任何问题..让它成为日历.星期五你能解释更多你的代码吗!仅供参考,麻烦的旧日期时间类(如和)现在已被类取代。