ciao.
Credo che il problema sia la rimodulazione. Andando a sbirciare il codice
questo è il metodo che fa il calcolo.codice:@Override public Period until(ChronoLocalDate endDateExclusive) { LocalDate end = LocalDate.from(endDateExclusive); long totalMonths = end.getProlepticMonth() - this.getProlepticMonth(); // safe int days = end.day - this.day; if (totalMonths > 0 && days < 0) { totalMonths--; LocalDate calcDate = this.plusMonths(totalMonths); days = (int) (end.toEpochDay() - calcDate.toEpochDay()); // safe } else if (totalMonths < 0 && days > 0) { totalMonths++; days -= end.lengthOfMonth(); } long years = totalMonths / 12; // safe int months = (int) (totalMonths % 12); // safe return Period.of(Math.toIntExact(years), months, days); }
Credo che a cannare sia questo punto qui, quello che normalizza
in particolare il metodo toEpochDay.codice:days = (int) (end.toEpochDay() - calcDate.toEpochDay()); // safe
Fatto prova con
e ho vistocodice:printDiff(LocalDate.of(2013, 01, 1), LocalDate.of(2014, 2, 1)); printDiff(LocalDate.of(2012, 12, 31), LocalDate.of(2014, 2, 1));
[2013-01-01 , 2014-02-01) = 1 year(s), 1 month(s), 0 day(s)
[2012-12-31 , 2014-02-01) = 1 year(s), 1 month(s), 1 day(s)
dovrei fare prove più serie per dirti altro
ps se vuoi dare un occhio
http://grepcode.com/file/repository....noLocalDate%29
@leleFt
concordo, preferivo di gran lunga la vecchia interfaccia!!

Rispondi quotando
