假设 2000 年 1 月 31 日是闰年,以下两种添加月份的方法给了我不同的结果。我做错了什么还是这两种处理闰年月份的不同理念?而且,如果这两种方法只是哲学上的差异,你怎么知道选择哪种方法?
方法1:使用LocalDate plusMonths()
:
LocalDate atestDate = LocalDate.parse("2000-01-31");
System.out.println("One month in future using LocalDate.addMonths() " + atestDate.plusMonths(1));
输出:
One month in future using LocalDate.addMonths() 2000-02-29
方法2:使用Calendar
:
Calendar zcal = Calendar.getInstance();
zcal.set(Calendar.DAY_OF_MONTH, 31);
zcal.set(Calendar.MONTH, 1);
zcal.set(Calendar.YEAR, 2000);
zcal.add(Calendar.MONTH, 0);
System.out.println("ONE MONTH IN FUTURE using Calendar: "
+ zcal.getTime());
输出:
ONE MONTH IN FUTURE using Calendar: Thu Mar 02 2000
为什么这两个日期的输出不一样?
谢谢。