Warum ist das Parsen Simple nicht richtig mein Date?
-
29-09-2019 - |
Frage
DateFormat dateFormat;
Das ist eine Variable in meiner Klasse. Ich stelle es auf den 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 eine neue Instanz java.sql.Date Strings, die in übergeben werden. Aus Gründen der Klarheit, hier ist eine 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 auf den Saiten sehen aus diesen Vorgängen resultierenden (nur Zugabe .toString () zu instantiations oben), erhalte ich eine Ausgabe wie die folgende
2010-10-30
2010-11-29
... anstelle der Eingabezeichenfolgen, von denen berichtet wird ...
sein2010-10-30 17:00:00
2010-11-29 16:00:00
Wer weiß, warum es mir nicht gibt ein Datum in dem Muster, das ich angegeben?
Lösung
Die javadocs für java.sql.Date
angeben, dass die Methode toString eine Zeichenfolge im Format gibt „yyyy-mm-dd“, so dass Sie das richtige Verhalten sind seeeing. Das Date
Objekt hat keine Kenntnis von dem Formatierer Sie es erstellt haben. Für die Ausgabe im gleichen Format erhalten verwenden, um die DateFormat.format
Methode anstatt toString
:
public void aMethod (String activateTime, String expireTime) {
Date example = new Date(dateFormat.parse(activateTime).getTime());
Date example2 = new Date(dateFormat.parse(expireTime).getTime());
System.out.println(example.toString() + " vs " + dateFormat.format(example));
System.out.println(example2.toString() + " vs " + dateFormat.format(example2));
}
Andere Tipps
Die java.sql.Date
enthält nur die Datum Teil für Datum und Uhrzeit. Sie wollen wahrscheinlich java.sql.Timestamp
stattdessen verwenden.
Timestamp example = new Timestamp(dateFormat.parse(activateTime).getTime());
Timestamp example2 = new Timestamp(dateFormat.parse(expireTime).getTime());
Es funktioniert auch wie in der durchschnittlichen SQL-Datenbank. Der DATE
Datentyp repräsentiert nur das Datum, der TIME
Datentyp nur die Zeit darstellt. Der TIMESTAMP
Datentyp repräsentiert das Datum und die Uhrzeit (manchmal DATETIME
genannt).
Beachten Sie, dass Ihre Stunde Muster ist falsch. Mit den genannten Beispielen, würden Sie eher wie zu verwenden HH
statt hh
. Siehe auch die SimpleDateFormat
javadoc .
Siehe auch:
Haben Sie versucht java.sql.Date zu java.util.Date?
zu ändern