Millisekunden performant in Zeitformat parsen

Cymatoxa

Mitglied
Guten Abend,

ich will eine Zeit in Millisekunden in ein Datums Format im Stil von "hh:mm:ss" parsen. Meine Idee war diese:
Code:
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTimeInMillis(timeMillis);
labelTime.setText(String.valueOf(DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM).format(c)));
Leider bekomme ich dabei eine Exception: Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Cannot format given Object as a Date
Habt ihr eine Idee wie ich möglichst performant eine Zeit in ms in ein schönes Format bekomme?
Danke für schnelle Antworten :)

LG, Cymatoxa
 
Ich hab das Problem so gelöst:
Code:
private String parseTime(long timeMillis) {
  long h = timeMillis/3600000;
  long m = timeMillis/60000 - 60*h;
  long s = timeMillis/1000 - 3600*h - 60*m;
  return ""+h+":"+((m<10)?"0":"")+m+":"+((s<10)?"0":"")+s;
}
Das funktioniert ohne Probleme, aber gibt es eine Möglichkeit, die Zeit schneller zu parsen?
Grüße, Cymatoxa
 
Erstmal Danke, aber liefert das SimpleDateFormat bei einer Übergabe von Millisekunden nicht immer das Datum seit 01.01.1990 oder so?
Gruß, Cymatoxa
 
Nein,
SimpleDateFormat baut sich intern mit den Millisekunden (und ggf. Zeitzone) Werten ein Calendar-Objekt zusammen. Und holt sich anschliesend davon die nötigen Werte für das angegebene Format.

Wenn man viel mit Zeiten zu tun hat, empfiehlt es sich eh die Joda-Time-Bibliothek zu verwenden. Diese ist wesentlich besser durchdacht und auch performanter als die JVM-Zeit API.
http://joda-time.sourceforge.net/
 
Zurück