Wie kann ich diese Zeichenfolge zu einem Standard-Datum in Java umwandeln?
-
05-10-2019 - |
Frage
Früher habe ich geschrieben, die folgende Frage: Wie kann ich dieses Datum konvertieren in Java?
Aber jetzt würde Ich mag wissen, wie ich diese Zeichenfolge in ein Datum / Uhrzeit umwandeln kann.
2010-03-15T16:34:46Z
Zum Beispiel: 03/15/10
AKTUALISIERT:
String pattern = "MM/dd/yy 'at' HH:mm";
Date date = new Date();
try {
date = new SimpleDateFormat(pattern).parse(q.getUpdated_at());
} catch (ParseException e) {
e.printStackTrace();
}
dateText.setText(new SimpleDateFormat("MM/dd/yy 'at' hh:mma").format(date));
Gibt mir ein Ergebnis wie:
Mon Mar 15 16:34:50 MST 2010
Wie kann ich es formatiert sein
03/15/10 at 4:34PM
Lösung
Auf dem Punkt gebracht, mögen Sie ein Datum konvertieren in string Format zu einem Datum in andere string Format . Sie haben:
2010-03-15T16:34:46Z
und Sie möchten
03/15/10 at 4:34PM
Sie wollen nicht mit am Ende java.util.Date
Objekt, wie Sie zunächst in Ihrer Frage implizieren. Sie wollen ja auch nicht da, dass die Renditen ihre toString()
verwenden, um ein festes Format wie definiertem in seine javadoc .
Die Antwort von Bozho gilt nach wie vor. Verwenden Sie java.text.SimpleDateFormat
. Zuerst müssen Sie auf Parst das Datum im String-Format in ein Date
Objekt, so dass Sie Format es zurück in einer anderen Zeichenfolge-Format.
// First parse string in pattern "yyyy-MM-dd'T'HH:mm:ss'Z'" to date object.
String dateString1 = "2010-03-15T16:34:46Z";
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(dateString1);
// Then format date object to string in pattern "MM/dd/yy 'at' h:mma".
String dateString2 = new SimpleDateFormat("MM/dd/yy 'at' h:mma").format(date);
System.out.println(dateString2); // 03/15/10 at 4:34PM
Andere Tipps
Sowohl SimpleDateFormat
und joda Zeit DateTimeFormat
diese analysieren kann, mit diesem Muster:
String pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'";
Zum Beispiel:
Date date = new SimpleDateFormat(pattern).parse(dateString);
Und (joda Zeit):
DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern);
DateTime dateTime = dtf.parseDateTime(s);
Aktualisieren
Sie haben 2 Datumsformate beteiligt - eine für Analyse die Eingabe und eine für Formatierung die Ausgabe. Also:
dateText.setText(new SimpleDateFormat("MM/dd/yy 'at' hh:mma").format(date));
(Natürlich aus Gründen der Optimierung können Sie die SimpleDateFormat
instanziiert nur einmal, und wieder verwenden)
Wenn Sie wollen Format Ausgabezeichenfolge, Änderung im Code folgende Zeile
dateText.setText(date.toString());
dateText.setText(String.format("%1$tm/%1$td/%1$ty at %1$tl:%1$tM%1$Tp", date));