100 votes

Java: Convertir une chaîne en TimeStamp

J'ai un problème lorsque j'essaie de convertir une String en TimeStamp. J'ai un tableau qui contient la date au format yyyy-MM-dd et je veux la changer au format yyyy-MM-dd HH:mm:ss.SSS. Donc, j'utilise ce code :

final String OLD_FORMAT = "yyyy-MM-dd";
final String NEW_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
String oldDateString = createdArray[k];
String newDateString;

final DateFormat formatter = new SimpleDateFormat(OLD_FORMAT);
final Date d = formatter.parse(oldDateString);
((SimpleDateFormat) formatter).applyPattern(NEW_FORMAT);
newDateString = formatter.format(d);
System.out.println(newDateString);

final Timestamp ts = Timestamp.valueOf(newDateString);
System.out.println(ts);

et je reçois le résultat suivant.

2009-10-20 00:00:00.000

2009-10-20 00:00:00.0

mais quand j'essaie simplement de faire

final String text = "2011-10-02 18:48:05.123";
ts = Timestamp.valueOf(text);
System.out.println(ts);

Je reçois le bon résultat :

2011-10-02 18:48:05.123

Sauriez-vous ce que je pourrais faire de travers ?

Merci pour l'aide.

0voto

solver Points 19

Je suis sûr que la solution est que votre oldDateString ressemble à "2009-10-20". De toute évidence, cela ne contient pas de données temporelles inférieures aux jours. Si vous formatez cette chaîne avec votre nouveau formateur, d'où proviendront les minutes, les secondes et les millisecondes ?

Le résultat est donc absolument correct : 2009-10-20 00:00:00.000

Pour résoudre cela, vous aurez besoin du timestamp d'origine (y compris les données temporelles) avant votre premier formatage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X