Gregorian Calendar - 29 Février
Voici le code suivant :
Code:
1 2 3 4 5 6
| GregorianCalendar gc = new GregorianCalendar(2007, Calendar.MARCH,1);
// Je veux me positionner au dernier jour du mois précédent.
gc.add(GregorianCalendar.DAY_OF_YEAR, -1);
System.out.println(gc.getTime()); |
Ce code donne comme résultat :
Mar 01 00:00:00 CET 2007
Etant donné que que GregorianCalendar gère directement des erreurs connues telles qu'un jour du mois invalide par rapport au calendrier Grégorien, je comprends que ma soustraction de 1 jour au 01/03/08 me donne le jour 29/02/2007 qui n'est donc pas correct.
Je pensais que GregorianCalendar réalisait la gestion des années bissextiles
J'ai donc formulé le code suivant pour obtenir un résultat correct.
Code:
1 2 3 4 5 6 7 8 9
| GregorianCalendar gc = new GregorianCalendar(2007, Calendar.MARCH,1);
if((gc.get(GregorianCalendar.MONTH)==GregorianCalendar.MARCH) &&
(!gc.isLeapYear(gc.get(GregorianCalendar.YEAR))))
{
gc.add(GregorianCalendar.DAY_OF_YEAR, -2);
}else{
gc.add(GregorianCalendar.DAY_OF_YEAR, -1);
} |
Ce code donne comme résultat :
Fev 28 00:00:00 CET 2007
Avez-vous, pensez-vous à une autre idée, concernant cette gestion d'année bissextile?
Merci