2017-02-14 9 views
0

Как я могу увеличить день с пропущенными выходными. Я имею в виду, если day=Friday, то day+1=Monday. Пожалуйста, обратите внимание на моем методе приращений, который я Increment календарного дня, а не рабочий деньКак я могу увеличить день с пропуском выходных дней

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

Мне нужно изменить этот метод для решения этой проблемы.

Update:

Я обновляю свой метод как этот

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

+0

FYI, хлопотно старые классы даты и времени, такие как [ 'java.util.Date'] (https://docs.oracle.com/javase/8/docs/api/java/util/Date .html) и ['java.util.Calendar'] (https://docs.oracle.com/javase/8/docs/api/java/util/Date.html) теперь [legacy] (https: // en.wikipedia.org/wiki/Legacy_system), вытесняется классами [java.time] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html). –

ответ

0

Календарный класс имеет постоянные, чтобы проверять день недели:

Пятницы является шестой день недели, делая Условный еще может решить эту проблему ...

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

Какой c переменной означает, что он не объявлен, у меня есть ошибка? – Abderrahim

+0

Должно ли быть cal ... typo ?? – Akshay

+0

и == ПЯТНИЦА не принимает его, у меня есть ошибка – Abderrahim

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

Не могли бы вы объяснить больше своего кода! – Abderrahim

 Смежные вопросы

  • Нет связанных вопросов^_^