SimpleDateFormat - erreur/incohérence de parse - weekyear
Rédigé par gorki Aucun commentaireLe problème :
SimpleDateFormat ne me retourne pas la date correcte :
try { SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/YYYY:HH:mm:ss", Locale.US); Date date = new Date(); String formatted = sdf.format(date); System.out.println(formatted); // 19/Jun/2013:13:31:16 System.out.println(sdf.parse(formatted)); // Sun Dec 30 13:32:15 CET 2012 } catch (ParseException e) { e.printStackTrace(); }
Pas cohérent !
Solution :
Ce petit test est un bon moyen de vérifier votre formatter SimpleDateFormat.
1) vérifier la locale. C'est courant d'avoir une date à parser "01/Jun/2013" et de ne pas préciser la locale. Du coup SimpleDateFormat prend votre locale par défaut, souvent FR, et esssaiera de trouver le mot Juin, mais ça vous le verrez assez : erreur de parse, etc....
2)... et ça, la bêtise : il ne faut pas utiliser YYYY mais yyyy. cf documentation (nouveau depuis Java 7)
Au moins je suis pas tout seul : ici, surtout là
Donc :
SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss", Locale.US);