2

重複の可能性:
joda time - 曜日を日付に追加

Joda ライブラリを使用して、特定の数の平日(つまり、週末を除く) を日付から差し引くにはどうすればよいですか?

入力日付が 2013 年 1 月 14 日 (月曜日) で、1 日減算すると、結果は 2013 年 1 月 11 日 (金曜日) になります。どうすればこれを達成できますか?

4

1 に答える 1

3

これを Joda ライブラリで直接行う方法はないかもしれませんが、独自の Java 機能を作成することはできます。次の例では、subtractWeekdays(d, num)メソッドは指定された曜日だけ日付をロールdバックしnumます。この例の出力はFri Jan 11 00:00:00 CST 2013、希望どおりです。

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class SimpleTest  {
   // NOTE: the input num must be positive.
   public static Date subtractWeekdays(Date d, int num) {
      int count = 0;
      Calendar c = Calendar.getInstance();
      c.setTime(d);

      do {
         c.add(Calendar.DAY_OF_YEAR, -1);
         if(isWeekday(c.get(Calendar.DAY_OF_WEEK))) {
            ++count;
         }
      } while(count < num);

      return c.getTime();
   }

   public static boolean isWeekday(int dayOfWeek) {
      return ((dayOfWeek != Calendar.SATURDAY) && (dayOfWeek != Calendar.SUNDAY));
   }

   public static void main(String[] argv) {
      try {
         SimpleDateFormat dateFormat = new SimpleDateFormat("MMM d, y");
         Date d = dateFormat.parse("Jan 14, 2013");
         Date d2 = subtractWeekdays(d, 1);
         System.out.println(d2);
      } catch(Exception ex) {}
   }
}
于 2013-01-17T19:25:35.033 に答える