2014-09-05 5 views
5

Gibt es einen Brief für die Millisekunden seit 1970 in SimpleDateFormat? Ich kenne die Methode getTime(), aber ich möchte ein Datums- und Zeitmuster definieren, das die Millisekunden enthält.Gibt es einen Brief für die Millisekunden seit 1970 in SimpleDateFormat?

+2

Können Sie die Seite, die Sie verknüpft lesen? Wenn ja, wird es dort aufgeführt. – icza

+0

http://stackoverflow.com/questions/4142313/java-convert-milliseconds-to-time-format?rq=1 – aldanux

+1

Laut [die Dokumente] (http://docs.oracle.com/javase/7/) docs/api/java/text/SimpleDateFormat.html) es sieht nicht so aus als gäbe es einen – Clive

Antwort

6

SimpleDateFormat hat kein Symbol (Buchstabe) zum Einfügen der Millisekunden seit dem Beginn der Epoche beginnend am 1. Januar 1970 00:00:00 UTC.

Grund: Ehrlich gesagt nur die Millisekunden eingefügt seit Beginn der Epoche nur den long Wert von Date.getTime() zurück eingefügt wird, wird der Wert, wie ein Zeitpunkt (Date) ist represeneted, die nicht sehr nützlich ist, wenn Ihr Ziel ist es, Erstellen Sie eine für Menschen lesbare, formatierte Datums-/Uhrzeit-Zeichenfolge. Ich sehe also kein Symbol dafür. Sie können diese Nummer einfach anhängen oder ihren Wert wie bei jeder anderen einfachen Nummer einschließen lassen.

Allerdings gibt es eine Alternative: String.format()

String.format() verwendet ein format string die auch Datum/Zeit Umwandlungen, die das Muster der SimpleDateFormat sehr ähnlich ist, unterstützt.

Zum Beispiel gibt es ein Symbol 'H' für die Stunde des Tages (24-Stunden-Uhr), 'm' für Monat (zwei Stellen) usw., so dass in den meisten Fällen können String.format() statt SimpleDateFormat verwendet werden.

Was Sie interessiert, ist auch ein Symbol: 'Q': Millisekunden seit Beginn der Epoche ab 1. Januar 1970 00:00:00 UTC.

Was noch besser ist, String.format() ist flexibel genug, um sowohl long Werte und Date s als der Eingabeparameter für Datum/Uhrzeit-Konvertierungen zu akzeptieren.

Verbrauch:

System.out.println(String.format("%tQ", System.currentTimeMillis())); 
System.out.println(String.format("%tQ", new Date())); 

// Or simply: 
System.out.printf("%tQ\n", System.currentTimeMillis()); 
System.out.printf("%tQ\n", new Date()); 

// Full date+time+ millis since epoc: 
Date d = new Date(); 
System.out.printf("%tF %tT (%tQ)", d, d, d); 
// Or passing the date only once: 
System.out.printf("%1$tF %1$tT (%1$tQ)", d); 

// Output: "2014-09-05 11:15:58 (1409908558117)" 
Verwandte Themen