Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何减去x个工作日_Java_Datetime_Jodatime - Fatal编程技术网

Java 如何减去x个工作日

Java 如何减去x个工作日,java,datetime,jodatime,Java,Datetime,Jodatime,可能重复: 如何使用Joda库从日期中减去一定数量的工作日(即不包括周末) 如果输入日期是2013年1月14日(星期一),我减去1天,我希望结果是2013年1月11日(星期五)。我怎样才能做到这一点呢?可能没有直接使用Joda库来实现这一点的方法,但是您可以编写自己的Java功能。在下面的示例中,subtractWeekdays(d,num)方法将日期d回滚一个给定的num。此示例的输出为2013年1月11日星期五00:00:00 CST,如需要 import java.text.Simple

可能重复:

如何使用Joda库从日期中减去一定数量的工作日(即不包括周末)


如果输入日期是2013年1月14日(星期一),我减去1天,我希望结果是2013年1月11日(星期五)。我怎样才能做到这一点呢?

可能没有直接使用Joda库来实现这一点的方法,但是您可以编写自己的Java功能。在下面的示例中,
subtractWeekdays(d,num)
方法将日期
d
回滚一个给定的
num
。此示例的输出为2013年1月11日星期五00:00:00 CST,如需要

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) {}
   }
}
import java.text.simpleDataFormat;
导入java.util.Calendar;
导入java.util.Date;
公共类SimpleTest{
//注意:输入数值必须为正。
公共静态日期减去工作日(日期d,整数){
整数计数=0;
Calendar c=Calendar.getInstance();
c、 设定时间(d);
做{
c、 添加(日历年的第天,-1);
if(isWeekday(c.get(Calendar.DAY/u-OF-u-WEEK))){
++计数;
}
}而(计数
2013年1月14日之后的一天不是1月11日!这毫无意义,肯定是13号?他想把周末(周六和周日)排除在外。这应该让你开始