重複の可能性:
joda time - 曜日を日付に追加
Joda ライブラリを使用して、特定の数の平日(つまり、週末を除く) を日付から差し引くにはどうすればよいですか?
入力日付が 2013 年 1 月 14 日 (月曜日) で、1 日減算すると、結果は 2013 年 1 月 11 日 (金曜日) になります。どうすればこれを達成できますか?
重複の可能性:
joda time - 曜日を日付に追加
Joda ライブラリを使用して、特定の数の平日(つまり、週末を除く) を日付から差し引くにはどうすればよいですか?
入力日付が 2013 年 1 月 14 日 (月曜日) で、1 日減算すると、結果は 2013 年 1 月 11 日 (金曜日) になります。どうすればこれを達成できますか?
これを 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) {}
}
}