Bonjour à tous,

je viens de m'apercevoir qu'une fonction que j'ai écrite est "buggée" et je me demande si quelqu'un pourrait m'aider à la corriger.
Mon problème concerne les dates et plus particulièrement leur formattage.

j'ai une fonction dont voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
public static String formateDateStr(String dateStr, String currentFormat, String newFormat) throws ParseException
{
    DateFormat currFmt = new SimpleDateFormat(currentFormat);
    DateFormat newFmt  = new SimpleDateFormat(newFormat);
    return newFmt.format(currFmt.parse(dateStr));
}
Cette fonction prend en entrée une date sous forme de chaine, le format utilisé pour représenter cette chaîne, et le format résultat.

ainsi, le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
String dateStr = "200001";
System.out.println("Date = " + dateStr + ", " + formateDateStr(dateStr, "yyyyww", "ww/yyyy"));
renvoit : Date = 200001, 01/2000

Ce qui me va très bien !

Par contre, si je fais le même appel avec 200901, voici ce que j'obtiens : Date = 200901, 01/2008

Pour avoir cherché un peu, on trouve que cela vient du fait que la première transformation transforme ma chaîne en la date Mon Dec 29 00:00:00 CET 2008, ce qui est correct, par contre, quand on la reformate, le numéro de semaine est bon, mais l'année est fausse (2008).

J'imagine que quelqu'un a déjà eu ce problème et a une solution à me donner.

D'avance merci.