Convertir java.util.Calendrier format ISO 8601 pour java.sql.Timestamp
J'ai une date dans le format de date ISO 8601 2015-09-08T01:55:28Z
. J'ai utilisé ce code pour convertir les ISO 8601 sort un Calendrier de l'objet:
Calendar cal = javax.xml.bind.DatatypeConverter.parseDateTime("2015-09-08T01:55:28Z");
et maintenant, j'ai besoin d'utiliser la cal.getTime()
pour obtenir mon temps, mais j'ai besoin de le convertir à une java.sql.Timestamp
. J'ai essayé de faire ceci:
final Timestamp finalDate = (Timestamp) cal.getTime();
mais j'ai eu cette erreur:
java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Timestamp
Idées?
new java.sql.Timestamp(cal.getTime().getTime())
- bingo! travaillé! merci man! vous devez faire cette réponse donc je peut vous votez,
InformationsquelleAutor José Mendes | 2015-09-08
Vous devez vous connecter pour publier un commentaire.
Comme l'exception, dit:
Calendrier::getTime()
renvoie unejava.util.Date
objet, et non unjava.sql.Timestamp
objet. Si vous ne pouvez pas convertir un Timestamp objet.Utilisation:
Et aussi envisager de remplacer
Agenda
avec la nouvelle Date & le Temps de l'API introduit dans Java SE 8.La Réponse par Puce est correct.
java.temps
La façon moderne dans Java 8 et les versions ultérieures, utilisez le nouvel java.le temps cadre. Ces nouvelles classes supplanter l'ancienne java.util.Date/.Calendrier qui se sont avérés être d'inquiétude et de confusion.
Un
Instantané
est un moment sur la ligne de temps, un nombre de nanosecondes depuis le premier moment de 1970 à UTC. La classe est en mesure d'analyser des chaînes comme les vôtres, qui sont conformes à la norme ISO 8601.Base de données via vieux
java.sql
typesÀ partir d'un Instant, nous pouvons obtenir un java.sql.Timestamp par l'appel de la
de
méthode vient d'être ajouté à cette vieille classe.Nous pourrions combiner les trois lignes dans un one-liner, pas que je vous le recommande (rend le débogage plus difficile).
Base de données via
java.time
typesDe JDBC 4.2, la conformité de la Pilote JDBC devrait être en mesure de passer à la java.les types d'heures par
getObject
etsetObject
sur unPreparedStatement
. Si votre pilote n'est pas le cas, utiliser les méthodes de conversion pour les anciennes classes.