Warum ist " = SimpleDateFormat nicht Parsen mein Datum richtig?
Ich versuche zu vermeiden,Neuinstallation von Eclipse um dieses Problem zu lösen, also ich hoffe mir kann jemand helfen mit diesem Datum-parsing-problem. Hier ist, was ich Tue.
DateFormat dateFormat;
Dass eine variable in meiner Klasse. Ich legen Sie es auf die folgenden.
dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//Example input: 2010-11-07 16:00:00
Wenn eine andere Methode aufgerufen wird, erstelle ich ein neues java.sql.Date-Instanz mit Zeichenketten übergeben werden. Um der Klarheit Willen, hier ist eine stark verkürzte version.
public void aMethod (String activateTime, String expireTime) {
Date example = new Date(dateFormat.parse(activateTime).getTime());
Date example2 = new Date(dateFormat.parse(expireTime).getTime());
}
Wenn ich mir die strings, die aus diesen Operationen (nur das hinzufügen .toString (), um instantiierungen oben), bekomme ich eine Ausgabe wie die folgende
2010-10-30
2010-11-29
... statt des Eingabe-strings, die gemeldet werden...
2010-10-30 17:00:00
2010-11-29 16:00:00
Jemand wissen, warum es Sie nicht geben Sie mir ein Datum in das Muster, das ich angegeben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den javadocs für
java.sql.Date
angeben, dass die toString-Methode gibt eine Zeichenfolge im format "yyyy-mm-dd", so sind Sie seeeing das richtige Verhalten. DieDate
Objekt hat keine Kenntnis von der Formatierung, die Sie verwendet, um es zu schaffen. Um die Ausgabe in dem gleichen format verwenden Sie dieDateFormat.format
Methode eher alstoString
:Den
java.sql.Date
enthält nur den Datumsteil des datetime. Sie wollen wahrscheinlich verwendenjava.sql.Timestamp
statt.Funktioniert es auch so wie im Durchschnitt der SQL-Datenbank. Die
DATE
- Datentyp enthält nur das Datum, dieTIME
Datentyp repräsentiert nur die Zeit. DieTIMESTAMP
Daten-Typ (manchmal alsDATETIME
) stellt das Datum und die Uhrzeit.Beachten Sie, dass Ihre Stunde pattern ist falsch. Mit der gegebenen Beispiele, die Sie lieber wie zu verwenden
HH
statthh
. Siehe auch die" = SimpleDateFormat
javadoc.Siehe auch:
java.sql.Timestamp
toString-Methode gibt das format "yyyy-mm-dd hh:mm:ss.fffffffff" - immer noch nicht, was der OP will, denn es enthält Nanosekunden-Präzision.java.sql.Date
stattjava.util.Date
ich nicht erwarten, dass er, um sich über die format. Der einzige Punkt der mitjava.sql.Date
zu können, bestehen ein date mit JDBC in einer SQL-Datenbank. Verwenden Sie es für die Präsentation ist schlicht falsch. Beachten Sie, dass, wenn Sie über tatsächlich bestehen, die es in der DB, der Zeit ein Teil verloren. Also, wenn Sie die Abfrage wieder von der DB erneut, und formatieren Sie es, die den Teil der Zeit wird angezeigt, wie00:00:00
.java.sql.Date
. Für die Zwecke der Anzeige die OP schien zu wollen, ein bestimmtes format, daher mein Kommentar.java.sql.Date
Klasse abstrahieren all die details von dem, was Ihr insbesondere die Datenbank will, so brauchen Sie nicht zu kümmern, wenn im Gespräch mit der DB. Wenn Sie die Informationen zu einem Benutzer können Sie die DateFormat-Klasse zu formatieren, wie Sie es möchten (und behandeln es als einjava.util.Date
).Haben Sie versucht, ändern Sie java.sql.Date zu java.util.Datum?