Question

J'essaie d'analyser des données dans un format MySql , j'ai rencontré SimpleDateFormat . Je peux avoir le bon jour et le bon mois, mais j’ai eu un résultat étrange pour l’année:

date = 2009-06-22;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
Date d = sdf.parse(date);
System.println(date);
System.println(d.getDate());
System.println(d.getMonth());
System.println(d.getYear());

Sorties:

2009-06-22
22           OK
5            Hum... Ok, months go from 0 to 11
109          o_O WTF ?

J'ai essayé de changer le format en AAAA-MM-jj (vous avez une erreur) et aa-MM-jj (n'a rien fait). Je programme sur Android, je ne sais pas si c'est important.

Pour l'instant, je contourne l'utilisation d'une scission, mais elle est sale et m'empêche d'utiliser les fonctionnalités i18n.

Était-ce utile?

La solution

L'année est relative à 1900. C'est une "fonctionnalité". de la classe Date . Essayez d’utiliser Calendrier .

Autres conseils

Merci à Aaron, la bonne version:

Calendar c = Calendar.getInstance(); 
c.setTime(sdf.parse(date));
System.println(c.get(Calendar.YEAR));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top