ISO 8601 ist ein internationaler Standard der ISO, der Empfehlungen über numerische Datumsformate und Zeitangaben enthält. (Wikipedia)
In einem Timestamp im ISO 8601 Format können alle wichtigen Informationen gespeichert werden. Leider kann das kein Mensch lesen – oder sagen wir einfach lesen.
ISO 8601
Normalerweise bekommt man einen ISO 8601 Timestamp als String – generell schon eine großartige Idee. Nicht.
String dateString = "2015-08-31T12:43:33.996+0200"
Wie ist der String jetzt aufgebaut?
- Datum im Format
yyyy-MM-dd
- Trennzeichen für die Zeit
T
- Uhrzeit im Format
HH:mm:ss
- UTC Anhang
.SSSZ
Das gesamte Format sieht dann so aus: yyyy-MM-dd'T'HH:mm:ss.SSSZ
Konvertieren
Angenommen, wir haben irgendwo eine Variable mit dem Namen date
, die das Datum im ISO 8601 Format hält. Dieses Datum wollen wir jetzt im Format 16:15 01.09.2015 – also HH:mm dd.MM.yyyy
– haben.
public String getHumanReadableDate() {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
try {
Date unformatedDate = format.parse(date);
String formatedDate = new SimpleDateFormat("HH:mm dd.MM.yyyy")
.format(unformatedDate);
return formatedDate;
} catch (ParseException e){
Log.e(TAG, "getDate " + e.getMessage());
}
return date;
}
Ohne Exception geht es natürlich nicht. Als try
catch
Block drum und auf geht. Da ich das im Android System benutze, verwende ich für den catch
Block Log.e()
. Sollte irgendwas schief gehen, wird der Ursprungsstring im ISO 8601 Format zurückgegeben.
Bildquelle: xkcd.com
Der Artikel ISO 8601 String zu Date konvertieren erschien zuerst auf icancode.de.