Chaîne -> java.util.Date -> java.sql.Date (avec horodatage)
Voici mon problème:
J'ai une entrée de l'utilisateur une date comme: 2012-12-24 (string)
Je concaténer une fois à cette chaîne, et de le convertir en java.util.Date
Mon code ressemble à ceci:
String tempstartdate = startdte; //startdte is the string value from a txtfield
tempstartdate += " 00:01:00";
String tempenddate = startdte;
tempenddate += " 23:59:59";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date validstartdte = null;
java.util.Date validenddte = null;
validstartdte = df.parse(tempstartdate); //validstartdte is a util.Date (and works)
validenddte = df.parse(tempenddate);
Mon problème est que quand je prends cet util.La Date et l'envie d'en faire un sql.Date:
java.sql.Date sqlstartDate = new java.sql.Date(validstartdte.getTime());
java.sql.Date sqlendDate = new java.sql.Date(validenddte.getTime());
Il ne veut pas me donner le timestamp j'ai affecté, il ne retourne la date sous la forme aaaa-MM-jj (comme 2012-12-23).
POURQUOI!? Je suis tellement frustré.
Remarque: j'ai remarqué que lorsque j'ai utilisé des points d'arrêt, j'ai été en mesure d'étendre sqlendDate et voir qu'il ya une valeur dans qu'il s'appelle cdate revient: 2012-12-12T23:59:59.000-0500
La base de données que j'utilise PostgreSQL.
S'il vous plaît aider! Très apprécié.
OriginalL'auteur akwarywo | 2012-12-21
Vous devez vous connecter pour publier un commentaire.
java.sql.Date
n'ont pas le temps.Utilisation
java.sql.Timestamp
à la place.Je sais que l'original nom de la classe java est trompeuse, mais tout ce qu'ils ont fait ici est d'ajouter à la confusion!
Nono, la situation est pire. Un
java.sql.Date d
ne stocker la fois en interne (ne pas afficher), et peuvent être transformés en un java.util.Date avecnew java.util.Date(d.getTime())
. Le constructeur de java.sql.La Date n'a pas coupé l'information en temps, mais la méthode toString ne pas l'afficher. Mais parce que le temps de l'information est cachée, deux sql.Dates avec la même représentation de chaîne peuvent être différents! (!.equals()). Aussi, vous devez être prudent avec le mélange de java.util.Date & java.sql.Timestamp, lire le dos. Qu'étaient-ils penser quand ils ont conçu ces classes de temps...OriginalL'auteur Felipe Fonseca
Je suis peut-être un peu tard pour répondre à cette question, mais je pense que ça pourrait être utile.
Comme indiqué par "Felipe Fonseca', je me suis converti à l'util date de sql date comme suit:
Normalement,
java.sql.Date
ne renvoie valeur à la Date et l'heure seront rejetées. Ainsi, afin d'obtenir du temps aussi,java.sql.TimeStamp
doit être utilisé.TimeStamp Construit un Horodatage de l'objet à l'aide d'un millisecondes de temps de la valeur. L'intégrale secondes sont stockés dans le sous-jacent valeur de date; les fractions de seconde sont stockés dans les nanos domaine de l'Horodatage de l'objet.
À cette fin,
utilDate.getTime()
est utilisé pour retourner le nombre de millisecondes depuis le 1er janvier 1970, 00:00:00 GMT représenté par cet Objet Date.Si nous voulons seulement
java.sql.Date
, nous pouvons faire:OriginalL'auteur Chandra Prakash
J'ai complètement renoncé à l'aide de Java standard classes de Date, exactement pour les raisons que vous de la liste.
J'ai été en utilisant Joda Time pour un certain temps maintenant, et l'ai trouvé beaucoup plus simple.
OriginalL'auteur jwismar