Calendar.add et années bissextiles
Bonjour à tous,
Je suis confronté à un problème sur la gestion des années bissextiles par Calendar. La problématique est la suivante: soient 2 dates, date1 et date2. Je dois déterminer que date2 est bien 5 ans après date1. Par exemple: si date1 vaut 31/03/2012, date2 doit valoir 30/03/2017. Pour cela, j'ai le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10
| Date date1 = monObjetMetier.getDate1();
Date date2 = monObjetMetier.getDate2();
Calendar compare = Calendar.getInstance();
compare.setTime(date1);
compare.add(Calendar.YEAR, 5);
compare.add(Calendar.DAY_OF_YEAR, -1);
if (!DateUtils.isSameDay(compare.getTime(), date2)) {
// ...
} |
Le problème se pose quand date1 vaut 29/02/2012. Selon le code ci-dessus, date1 + 5 ans = 27/02/2017 alors qu'on devrait tomber sur le 28 février :(
Bien sûr, je pourrais ne pas soustraire 1 jour si date1 tombe un 29 février mais je préfèrerais avoir une solution plus propre ;) Si l'un(e) d'entre vous à une quelconque idée, je suis preneur !
D'avance merci