2016-11-10 3 views
0

TimeUnit Verwendung von I Hours und Minutes in Milliseconds mit dem folgenden Code konvertieren wollte:Konvertieren Stunden und Minuten in Millisekunden und zurück in HH: mm: ss Format

int hours = 01, minutes = 0; 
long milliseconds = TimeUnit.SECONDS.toMillis(TimeUnit.HOURS.toSeconds(hours) + TimeUnit.MINUTES.toSeconds(minutes)); 

funktioniert mit 3600000 Millisekunden

Und mit SimpleDateFormat in HH:mm:ss Format zurück:

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); 
Date date = new Date(milliseconds); 
String returnFormat = formatter.format(date); //Final Result. 

und dies gibt mir ein Ergebnis von 09:59:59, die nicht die erwartete Ausgabe ist.

Ich bin verwirrt, was ist falsch mit dem obigen Code? Ich erwarte 01:00:00 Ausgabe.

UPDATE:

Eigentlich ich den obigen Code bin mit einem einfachen Countdown-Timer mit Handler post.delayed Funktion zu erstellen.

... 
@Override 
public void run() { 
    milliseconds -= 1000; //Remove 1 Seconds 
    handler.postDelayed(this,1000); //Delay in 1 Seconds 
    SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); //Create Time Formatting 
    Date date = new Date(milliseconds); //Put the milliseconds into Format 
    String returnFormat = formatter.format(date)); 
    Log.w("COUNTDOWN", returnFormat); 
} 
+4

Ich habe darüber erwartet. Das '3600000' ist eine Dauer (1 Stunde in Millisekunden), es ist nicht die Anzahl von ms seit dem Beginn der Unix-Epoche. Was erwartet 'new Date()'. Und es gibt wahrscheinlich auch ein paar schöne Zeitzonen. –

+0

Warum formatieren Sie es nicht selbst, wenn Sie bereits die Werte für Stunden und Minuten haben? Etwas wie 'String.format ("% 02d:% 02d ", Stunden, Minuten)'. Beachten Sie auch, dass "Stunden = 01," Oktalnotation ist, d. H. Sie können nicht "08" usw. schreiben. – Thomas

Antwort

0

Dies passiert, weil Ihre Zeitzone anders ist. Durch die Zeitzone GMT können Sie das erwartete Ergebnis erzielen. Verwenden Sie das folgende Code-Snippet.

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); 
Date date = new Date(milliseconds); 
formatter.setTimeZone(TimeZone.getTimeZone("GMT")); 
String returnFormat = formatter.format(date); //Final Result. 
System.out.println(returnFormat); 
+0

Danke, das funktioniert! – Polar

Verwandte Themen