Date() erzeugt nicht aktuellen Wert

xrax

Erfahrenes Mitglied
Hallo zusammen,

ich schreibe wärend der Laufzeit eine protokoll.txt.
Diese enthällt die aktuelle Zeit + einem Text
Ich schreibe das wie folgt:

Code:
BufferedWriter protokoll;
protokoll=new BufferedWriter( new FileWriter("protokoll.txt",true) );
protokoll.write(new SimpleDateFormat("dd.MM.yy-HH:mm:ms").format(new Date())+" - "+text);
protokoll.flush();
In der Datei steht dann z.B.
13.11.08-14:34:348 - MyText

Aber es steht dort hunderte male die gleiche Uhrzeit plus ab und zu 1 bis 2ms. Dann wird plötzlich eine Sekunde hinzugezählt und es geht wieder los mit paar hundert mal der gleichen "neuen" Zeit. Dann wiede mal 1 Sek plus usw.

Gebe ich jedoch
Code:
protokoll.write(System.currentTimeMillis()+" - "+text);
aus, dann werden immer die korrekten ms angegeben. Also bei jedem Eintrag ein paar ms plus. Und keine "Sekundensprünge".

Die Zeitangabe bis auf die ms genau anzugeben ist zwar nicht so super wichtig. Ich würde aber gerne wissen warum sich
Code:
new SimpleDateFormat("dd.MM.yy-HH:mm:ms").format(new Date()
so verhällt.

Hat jemand eine Erklärung?

Besten Dank
xrax
 
dd.MM.yy-HH:mm:ms

dadurch gibst du am Ende die Minuten + die Sekunden direkt hintereinander aus.

dd.MM.yy-HH:mm:s

Ok, dadurch haben wir die Sekunden am Ende. Wenn wir noch Millisekunden haben wollen wird das meistens mittels .S gemacht

dd.MM.yy-HH:mm:s.S

Würde ich behaupten nach der API, wenn man die Millisekunden noch drin haben will.
 
Zurück