我试图以这样的方式将天数添加到某个日期,如果我有日期2020-01-22并且我想添加 10 天,结果是2020-02-01。
我试图通过以下方式做到这一点:
public static String sumarDiasAFecha(String fecha, int dias) {
if(dias == 0){
return fecha;
}
String[] f = fecha.split("-");
Calendar calendar = Calendar.getInstance();
//calendar.setTime(new Date(Integer.parseInt(f[0]), Integer.parseInt(f[1]), Integer.parseInt(f[2])));
calendar.set(Integer.parseInt(f[0]), Integer.parseInt(f[1]), Integer.parseInt(f[2]));
calendar.add(Calendar.DAY_OF_MONTH, dias);
SimpleDateFormat fe = new SimpleDateFormat("YYYY-MM-dd");
return fe.format(calendar.getTime());
}
我已经成功了,但是我有一个小问题,因为如果我们使用日期2020-01-22执行前面的示例并添加 10 天,结果是2020-03-01;也就是说,它把天数加起来很完美,但反过来又增加了一个月,不管增加的天数,它总是增加一个月。
我使用库JDateChooser
来检索基准日期。
要进行调整,请记住您必须从输入的月份中减去 -1:
你可以在源代码中看到原因:
因此第一个月从 0 开始。
这样你会得到想要的结果:
例子:
离开:
您必须考虑到 中的月份
Calendar
,从 0 到 11,也就是说,月份 0 是一月,而 11 是十二月,这就是它增加一个月的原因。在上一行中,您按原样传递数字,没有减去一个单位,因此当您传递2020-01-22时,当您得到与
1
月份对应的数字时,您指的不是一月而是二月。应该:
通过在 中减去一个单位
Integer.parseInt(f[1])-1
,在您的情况下,您将引用正确的月份,这是 所使用的格式Calendar
,如以下链接中所指定。