java.time ISO-Datumsformat mit festen Millisekunden (in Java 8 und höher)

8

Standardmäßig ist die toString Methode von Instant verwendet die DateTimeFormatter.ISO_INSTANT Formatierer. Dieser Formatierer druckt die Ziffern nicht für Sekundenbruchteile, wenn sie zufällig 0 sind.

Java-Zeit Beispiele:

%Vor%

Joda-Time Beispiele (und was ich von java.time erwarten würde):

%Vor%

Das ist wirklich frustrierend, in einigen Systemen zu analysieren. Elasticsearch war das erste Problem, dem ich begegnete, es gibt kein vordefiniertes Format, das optionale Millis unterstützt, aber ich kann das wahrscheinlich umgehen mit einem benutzerdefinierten Format. Der Standardwert scheint einfach falsch zu sein.

Es sieht so aus, als könnten Sie sowieso keine eigene Formatzeichenfolge für Instants erstellen. Ist die einzige Option, die meinen eigenen java.time.format.DateTimeFormatterBuilder.InstantPrinterParser implementiert?

    
Ed Thomas 08.10.2015, 21:09
quelle

1 Antwort

7

Erstellen Sie einfach ein DateTimeFormatter , das drei Einträge enthält Nachkommastellen.

%Vor%

Dann benutze es. Zum Beispiel:

%Vor%

... druckt (zu der Zeit, wenn ich es ausführe):

%Vor%

Auszug aus dem Klassendokument :

  

... Der Parameter fractionalDigits ermöglicht die Steuerung der Ausgabe der Bruchzahlsekunde. Bei Angabe von Null werden keine Nachkommastellen ausgegeben. Von 1 bis 9 wird eine zunehmende Anzahl von Ziffern ausgeben, wobei bei Bedarf eine Null-Rechts-Auffüllung verwendet wird. Der spezielle Wert -1 wird verwendet, um so viele Ziffern wie nötig auszugeben, um irgendwelche abschließenden Nullen zu vermeiden. ...

    
Sotirios Delimanolis 08.10.2015, 21:27
quelle

Tags und Links