2016-04-23 9 views
1

Ich verwende android.text.format.DateFormat, um eine lange in Stunden, Minuten und Sekunden zu konvertieren. Hier ist der Code Ich teste mit:DateFormat.format gibt 01:00:00 mit HH zurück: mm: ss format

DateFormat.format("HH:mm:ss", 1000) 

Das gibt:

01:00:01 

Warum ist das? Laut der SimpleDateFormat Referenz sollte es 00:00:01 zurückgeben, tut es aber nicht. Ich habe alle Kombinationen ausprobiert und immer noch keinen Unterschied. Ich muss möglicherweise die TimeUnit.MILLISECONDS.to... Methoden verwenden, wenn DateFormat nicht funktioniert.

+0

Hinweis, dass ein Datum keine Dauer ist oder ein Intervall, wenn das ist, wo man wirklich geht mit diesem. – Savior

+1

Sie verwenden implizit die britische Zeit für das Datum 1/1/1970 (Epoche), als die Zeitzone GMT + 1 war. –

Antwort

2

Die DateFormat beobachtet Ihre lokale Zeitzone. Wenn ich Ihre Frage versteht, dann müssen Sie etwas wie:

DateFormat df = new SimpleDateFormat("HH:mm:ss"); 
df.setTimeZone(TimeZone.getTimeZone("UTC")); 
String str = df.format(1000); 
System.out.println(str); 

Ausgang ist (wie erwartet)

00:00:01 
+0

Danke! Am Ende verwendete ich eine etwas andere Methode als Ihre, indem ich eine Kalender-Instanz verwendete, die Zeitzone auf UTC einstellte, die Uhrzeit einstellte und DateFormat wie zuvor mit der Kalender-Instanz verwendete. – Timmo