Результат периода для следующих 2 случаев (начиная с 2016 года с 28 февраля по 2017 год 1 марта) являются одинаковыми друг с другом.Joda-Time: странное поведение для високосного года в расчете периода
Не могли бы вы помочь объяснить это странное поведение?
Случай 1: 2016 28 февраля 2017 Mar 1
Calendar start1 = Calendar.getInstance();
start1.set(2016, Calendar.FEBRUARY, 28, 0, 0, 0);
Calendar end1 = Calendar.getInstance();
end1.set(2017, Calendar.MARCH, 1, 0, 0, 0);
Interval i1 = new Interval(new DateTime(start1.getTime()), new DateTime(end1.getTime()))
System.out.println(i1.toPeriod());
результат: P1Y1D
Случай 2: 2016 29 февраля 2017 Mar 1
Calendar start2 = Calendar.getInstance();
start2.set(2016, Calendar.FEBRUARY, 29, 0, 0, 0);
Calendar end2 = Calendar.getInstance();
end2.set(2017, Calendar.MARCH, 1, 0, 0, 0);
Interval i2 = new Interval(new DateTime(start2.getTime()), new DateTime(end2.getTime()))
System.out.println(i2.toPeriod());
результат: P1Y1D
Что такое '2016-02-28' плюс 1 год? '2017-02-28'. --- Что такое '2016-02-29' плюс 1 год? '2017-02-28'. --- ** Тот же ответ **, так: Что такое '2017-02-28' плюс 1 день? '2017-03-01'. --- См. Javadoc ['DateTime.plus (период ReadablePeriod)'] (http://joda-time.sourceforge.net/apidocs/org/joda/time/DateTime.html#plus (org.joda.time. ReadablePeriod)). – Andreas
Возможный дубликат: [Does org.joda.time.Period уважают високосные годы?] (Http://stackoverflow.com/questions/34769873/does-org-joda-time-period-respect-leap-years) –