2017-02-14 10 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

、こうした[ '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

カレンダークラスには、曜日を確認する定数があります。

問題を解決することができれば、他の金曜日がやって、週6日目です...

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

は、日付のインスタンスを取得していない追加します。週末を除く日数。指定された日付が週末の場合は、次の月曜日に日付を設定します。 FYI

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

関連する問題