Der folgende Code gibt mir die aktuelle Zeit. Aber es sagt nichts über Millisekunden aus.
public static String getCurrentTimeStamp() {
SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//dd/MM/yyyy
Date now = new Date();
String strDate = sdfDate.format(now);
return strDate;
}
Ich erhalte ein Datum im Format 2009-09-22 16:47:08
(JJJJ-MM-TT HH: MI: Sek.) .
Aber ich möchte die aktuelle Zeit im Format 2009-09-22 16:47:08.128
((JJJJ-MM-TT HH: MI: Sek.Ms) abrufen - wobei 128 die Millisekunde angibt.
SimpleTextFormat
wird gut funktionieren. Hier ist die niedrigste Zeiteinheit die zweite, aber wie komme ich auch zur Millisekunde?
java.util.Date
,java.util.Calendar
undjava.text.SimpleTextFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen. Siehe Tutorial von Oracle .Antworten:
quelle
toString(String format)
Methode? Dasjava.util.Date
scheint es nicht zu haben. Beziehen Sie sich auf die Joda Time API? Ein möglicher Vorteil ist jedoch die Wiederverwendung desselben Formatierungsobjekts. Zum anderen müssen Sie keine API hinzufügen. Die Date-Klasse ist eine Standard-Java-Bibliotheksklasse.LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"))
Ein Java One Liner
im JDK8-Stil
quelle
Sie müssen nur das Millisekundenfeld in Ihre Datumsformatzeichenfolge einfügen:
Das API-Dokument von SimpleDateFormat beschreibt die Formatzeichenfolge ausführlich.
quelle
Versuche dies:-
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
oder
quelle
tl; dr
java.time
In Java 8 und höher ist das Java.time- Framework in Java 8 und höher integriert. Diese neuen Klassen ersetzen die problematischen alten Klassen java.util.Date/.Calendar. Die neuen Klassen sind von dem äußerst erfolgreichen Joda-Time- Framework inspiriert , das als Nachfolger gedacht ist. Das Konzept ist ähnlich, aber neu aufgebaut. Definiert durch JSR 310 . Erweitert um das ThreeTen-Extra- Projekt. Siehe das Tutorial .
Beachten Sie, dass java.time eine Auflösung von Nanosekunden (9 Dezimalstellen in Sekundenbruchteilen) gegenüber der Millisekundenauflösung (3 Dezimalstellen) von java.util.Date und Joda-Time bietet. Wenn Sie also nur 3 Dezimalstellen formatieren, können Sie Daten ausblenden.
Wenn Sie Mikrosekunden oder Nanosekunden aus Ihren Daten entfernen möchten, kürzen Sie diese.
Die java.time-Klassen verwenden standardmäßig das ISO 8601- Format, wenn Zeichenfolgen analysiert / generiert werden. A
Z
am Ende steht für UTCZulu
und bedeutet UTC .An
Instant
repräsentiert einen Moment auf der Zeitachse in UTC mit einer Auflösung von bis zu Nanosekunden . Die Erfassung des aktuellen Moments in Java 8 ist auf Millisekunden beschränkt. Eine neue Implementierung in Java 9 erfasst abhängig von den Fähigkeiten der Hardware-Uhr Ihres Computers bis zu Nanosekunden.Ersetzen Sie das
T
in der Mitte durch ein Leerzeichen und dasZ
durch nichts, um die gewünschte Ausgabe zu erhalten.Da Sie den Versatz oder die Zeitzone nicht einbeziehen möchten, legen Sie eine "lokale" Datums- und Uhrzeitangabe fest, die nicht mit einem bestimmten Ort zusammenhängt.
Joda-Zeit
Die äußerst erfolgreiche Joda-Time-Bibliothek war die Inspiration für das Java.time-Framework. Es ist ratsam, bei Bedarf auf java.time zu migrieren.
Das ISO 8601- Format umfasst Millisekunden und ist die Standardeinstellung für die Joda-Time 2.4-Bibliothek.
Beim Laufen…
Bei Bedarf können Sie auch den Millisekunden-Sekundenbruchteil als Zahl angeben:
quelle
Der einfachste Weg war (vor Java 8) zu verwenden,
Aber Simple ist nicht Thread-sicher. Weder java.util.Date . Dies führt zu potenziellen Parallelitätsproblemen für Benutzer. Und es gibt viele Probleme bei diesen vorhandenen Designs. Um diese jetzt in Java 8 zu überwinden, haben wir ein separates Paket namens java.time . Dieses Java SE 8- Dokument für Datum und Uhrzeit bietet einen guten Überblick darüber.
In Java 8 reicht also etwas wie das Folgende aus (um das aktuelle Datum und die aktuelle Uhrzeit zu formatieren).
Und eine Sache zu beachten ist, dass es mit Hilfe der beliebten Drittanbieter-Bibliothek joda-time entwickelt wurde ,
Aber jetzt
joda-time
wird das veraltet und die Benutzer gebeten, auf neue zu migrierenjava.time
.Wie auch immer, nachdem ich das gesagt habe,
Wenn Sie eine Kalenderinstanz haben , können Sie diese unten verwenden, um sie in die neue zu konvertieren
java.time
.Wenn Sie ein Date-Objekt hatten,
Wenn Sie gerade die Epoche Millisekunden hatten,
quelle
Ich würde so etwas verwenden:
Die Variable
dateTime
kann ein beliebiger Datums- und / oder Zeitwert sein, siehe JavaDoc fürFormatter
.quelle
Um die obigen Antworten zu ergänzen, finden Sie hier ein kleines Arbeitsbeispiel eines Programms, das die aktuelle Uhrzeit und das aktuelle Datum einschließlich Millisekunden druckt.
quelle
Verwenden Sie diese Option, um Ihre aktuelle Zeit im angegebenen Format abzurufen:
quelle
java.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 und höher. Siehe Tutorial von Oracle .Ich habe hier ein einfaches Beispiel, um Datum und Uhrzeit mit Millisekunden anzuzeigen ......
quelle
Ich sehe keinen Hinweis darauf:
Das obige Format ist ebenfalls nützlich.
http://www.java2s.com/Tutorials/Java/Date/Date_Format/Format_date_in_yyyyMMddHHmmssSSS_format_in_Java.htm
quelle
Ans:
quelle
Das Dokument in Java 8 nennt es im Bruchteil einer Sekunde , während es in Java 6 Millisekunden heißt . Dies brachte mich zu Verwirrung
quelle
java.text (vor java 8)
java.time
quelle
Sie können es einfach in dem gewünschten Format erhalten.
quelle