Question

Je suis un Date qui a été converti en un String à transmettre à un serveur Java Socket. Un exemple de cette valeur est 06:19:18p.m. 13/01/2011.

Dans le serveur Socket je suis en train de le convertir à une valeur de Date avant d'écrire à une table de base de données SQL, mais la valeur convertie est NULL. J'ai aussi essayé d'écrire la valeur à la base de données SQL comme String d'origine, mais il n'écrit pas moins qu'il n'y ait pas deux points, arrêt complet ou caractères barre oblique en elle.

Est-il possible que je peux contourner cela? Je suis désolé que je ne peux pas voir ou poster la trace de la pile, comme je n'ai pas accès administrateur au serveur que je suis en mon fichier Jar sur.

Mon code pour convertir le String est:

Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ssa dd/MM/yyyy");
try { 
    date = sdf.parse(timestamp);
} 
catch (ParseException e) {
    e.printStackTrace();
}
Était-ce utile?

La solution

Je ne sais pas pourquoi vous ne pouvez pas analyser correctement mais vous pensez tout faux à ce sujet. Au lieu d'enregistrer chaîne dans la base de données, vous devez faire la colonne de type TIMESTAMP ou DATE. Ensuite, vous pouvez utiliser getDate () du JDBC pour obtenir exactement l'objet de la date.

Autres conseils

« a » dans votre modèle SimpleDateFormat ne peut analyser « AM » ou « PM », mais pas « p.m. ». Il suffit de changer cela et votre analyse sera couronnée de succès.

Ce pourrait être juste une faute de frappe, mais votre exemple de « 6:19:18 h, heure. 13/012011 » ne correspond pas à votre format de date simple car il attend deux barres obliques dans votre date.

Il serait très utile de trouver un moyen d'obtenir la piste de pile ou d'essayer ce code sur les données séparément ailleurs pour que vous puissiez vous assurer que vous n'êtes pas seulement obtenez des données incorrectes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top