这个问题困扰着我。我已经四处搜寻,发现java从当前日期开始增加,但是我希望它从过去的某个日期开始。

例如,让我们以这种格式的日期开始:

“ 1986-09-20”

如何增加日期,以使上面的示例变为“ 1986-09-27”,再增加一个就变为“ 1986-10-4”,直到年底变为“ 1987-01” -03“

我了解我可以使用当天的+ = 7来增加日期,如果超过30,则可以增加月份,但是我不知道如何计算30或31或2月的leap日的日子。

我一直在查看Calendar的文档,注意到它可能包含解决方案,但我不知道如何/从哪里开始。

我想将结果格式设置为yyyy-mm-dd,而不是Java日期格式,即Day Month dd time时区yyyy

最佳答案

以下是您在寻找什么?

Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(1986, 8, 20);
int year = cal.get(Calendar.YEAR);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
while (year >= cal.get(Calendar.YEAR)) {
    cal.add(Calendar.DAY_OF_MONTH, 7);
    System.out.println(sdf.format(cal.getTime()));
}


输出:


  1986-09-27
  1986-10-04
  1986-10-11
  1986-10-18
  1986-10-25
  1986-11-01
  1986-11-08
  1986-11-15
  1986-11-22
  1986-11-29
  1986-12-06
  1986-12-13
  1986-12-20
  1986-12-27
  1987-01-03

10-07 18:55