2008-10-22 8 views
4

je suis tombé sur un extrait de code comme ceci:Java Timestamp valueOf

Timestamp expiryDate = Timestamp.valueOf(dateStr + " " + "23:59:59.000");

Ici chaîne_date est une chaîne saisie par l'utilisateur sous une forme, dans le format aaaa-mm-jj. Maintenant, le comportement de Timestamp.valueOf est tel qu'il convertit les dates inexistantes en dates appropriées appropriées. Dire le 31 juin 2008 au 1er juillet 2008.

Comment puis-je vérifier en Java si la chaîne dateStr est en fait une date valide? Je sais que je peux faire la vérification manuellement, mais ce que je voudrais savoir, c'est si une méthode est déjà disponible pour faire la même chose.

Répondre

6

Essayez SimpleDateFormat. Vous définissez simplement un format tel que celui de votre exemple, puis appelez parse sur votre dateStr.

+0

Vous devez vous assurer que setLenient() est défini sur false, sinon vous rencontrerez les mêmes problèmes que Timestamp. –

+0

Merci Adam. Cela a fonctionné correctement mais pas avant d'appeler setLenient (false) sur l'objet SimpleDateFormat. Merci pour ce pointeur, Spencer! –

+1

Notez également que SimpleDateFormat.parse() est * non * thread-safe. Donc, si vous faites ceci dans un servlet, vous ne pouvez pas avoir une instance statique de votre SimpleDateFormat, et devrez le gérer en conséquence. –

Questions connexes