2
我如何使用喬達庫從日期減去一定數量的平日(即不包括週末) ?
如果輸入日期是2013年1月14日(星期一),我減去1天,我希望結果是2013年1月11日(星期五)。我怎樣才能做到這一點?
我如何使用喬達庫從日期減去一定數量的平日(即不包括週末) ?
如果輸入日期是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) {}
}
}
減去2013年1月14日的一天不是1月11日! –
確實沒有意義,它會是第13名? –
他想排除週末(週六和週日)。 – Swapnil