这个问题困扰着我。我已经四处搜寻,发现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