2017-02-14 102 views
0

如何通過跳過週末來增加一天。我的意思是如果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年2月20日2017年2月18日

+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

日曆類具有常量來檢查星期幾:

FRIDAY是一週的​​第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()); 
} 
+0

什麼c變量意味着它不聲明,我有一個錯誤嗎? – Abderrahim

+0

它應該是卡爾...錯字? – Akshay

+0

和== FRIDAY不接受它,我有錯誤 – 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

相關問題