
Originariamente inviata da
andbin
Ok ma prendiamo dal mio [2012-11-30 , 2014-02-01)
In modo empirico ma comunque credo logico (niente "calcoli" matematici particolari):
- c'è tutto il 2013 in mezzo: 1 year
- c'è tutto il Gennaio 2014: 1 month
- c'è tutto il Dicembre 2012: +1 month
- c'è il 30 Novembre 2012 (che è incluso!): 1 day
Mentre stampa: 1 year(s), 2 month(s), 2 day(s)
È sbagliato il mio ragionamento?
Ni... partendo dal 30/11/2012 aggiungi 1 anno.
Arrivi al 30/11/2013. Aggiungi 2 mesi (MESI!!), arrivi al 30 gennaio 2014 (sempre per l'annoso problema dell'aggiunta di 1 mese alla data di fine di un mese di 30 giorni....) e mancano ancora 2 giorni per arrivare al 1 febbraio.
codice:
LocalDate data = LocalDate.of(2014, 11, 30);
// Aggiungo 2 mesi
LocalDate d1 = data.plus(2, ChronoUnit.valueOf("MONTHS"));
System.out.format("%s + 1 MESE -> %s%n", data, d1);
Stampa 30 gennaio.
Il problema è questa affermazione:
- c'è tutto il Gennaio 2014: 1 month
In realtà non considera "tutto gennaio", ma gennaio fino al 30 (perchè parte da una data posizionata alla fine di un mese di 30 giorni).
Ciao.