tl; dr
Instant.now()
.toString()
2016-05-06T23: 24: 25.694Z
ZonedDateTime
.now
(
ZoneId.of( "America/Montreal" )
)
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " )
2016-05-06 19: 24: 25.694
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.
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
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.
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016-05-06T23: 24: 25.694Z
Ersetzen Sie das T
in der Mitte durch ein Leerzeichen und das Z
durch nichts, um die gewünschte Ausgabe zu erhalten.
String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.
2016-05-06 23: 24: 25.694
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.
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
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.
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
Beim Laufen…
Now: 2013-11-26T20:25:12.014Z
Bei Bedarf können Sie auch den Millisekunden-Sekundenbruchteil als Zahl angeben:
int millisOfSecond = myDateTime.getMillisOfSecond ();