Quantcast
Channel: icancode.de
Viewing all articles
Browse latest Browse all 34

ISO 8601 String zu Date konvertieren

$
0
0

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

ISO 8601 XKCD

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.


Viewing all articles
Browse latest Browse all 34