Problem bei Darstellung der Laufzeit eines Programms

oetzi

Bekanntes Mitglied
Hallo zusammen,

ich schreibe mir gerade einen TimeHelper, der mir eine Art Stoppuhrfunktion bietet für die Laufzeit von Programmen.

Die Laufzeit in Millisekunden erhalte ich ja auch ganz einfach über die Differenz zweier Date Objekte, welche ich mir am Anfang und Ende per new Date().getTime() geholte habe.

Allerdings bringt mich die Darstellung über SimpleDateFormat etwas ins grübeln.
Beispiel:
Lasse ich mir 2000 Millisekunden über diesen Formater
-- SimpleDateFormat dfMinutes = new SimpleDateFormat( "mm:ss" );
formatieren und ausgeben
-- dfMinutes.format(new Date(millisec))
erhalte ich wie erwartet:
--> 00:02

Nehme ich allerdings die Stunden noch dazu
-- SimpleDateFormat dfHours = new SimpleDateFormat( "HH:mm:ss" );
erhalte ich:
--> 01:00:02

Kann mir wer sagen, wo die 01 bei der Stundenanzeige herkommt bzw. wie ich das Problem löse?
Gibt es vielleicht einen besseren Weg, als diesen Umweg über das Date Objekt?

Schönen Gruß
oetzi
 
2000 ms ist
1. Januar 1970 01:00:02 in Deutschland, in England wäre es gerade 00:00:02,
wenn dir das lieber ist kannst du eine englische Zeitzone setzen,
oder z.B. 23 Stunden draufaddieren 😉

grundsätzlich ist bei Date + SimpleDateFormat zu beachten, dass reale Zeiten mitspielen:
unterschiedlich lange Monate, Schaltjahre, Sommer/ Winterzeit,
im Bereich weniger Tage aber wohl akzeptabel

selber rechnen/ formatieren oder andere APIs wie Joda-Time wären die Alternativen
 
Zuletzt bearbeitet von einem Moderator:
Hi Slater,

danke für die Info! Das mit der Zeitzone erklärt einiges 🙂
Dann scheint das ganze über Date Objekte zu machen ja wirklich nicht besonders cool zu sein.

Gut, gucke mir mal diese Joda-Time bei Gelegenheit genauer an. Für meinen kleinen TimeHelper wird eigenen Formatieren aber sicher auch kein Thema sein.

Gruß
oetzi
 
Die Zeit kannst du einfach via
Code:
System.currentTimeMillis()
lesen. Dann kannst du dir das Erstellen eines Date Objekts sparen.
 

Neue Themen


Zurück
Oben