2016-08-11 2 views
1

Nach dem java.time documentation sollte java.time Lage sein, ein oder Locallocaltime mit Nanosekunden Präzision zu präsentieren, aber wenn ich LocalDateTime.now() laufen und ausdrucken, es zeigt nur 3 Ziffern statt 9.Wie wird die Genauigkeit von LocalDateTime in Java.time auf Nanosekunden gesetzt?

So:

2016-08-11T22:17:35.031 

Gibt es eine Möglichkeit, eine höhere Präzision zu erhalten?

+2

Wie drucken Sie es aus? Und warum brauchen Sie eine höhere Präzision - die Computeruhr ist wahrscheinlich sowieso nicht genauer. –

+0

Ich verwende 'System.out.println (LocalDateTime.now())', um es auszudrucken. Ich habe gerade begonnen, Java zu lernen, experimentiere ein bisschen herum und bleibe bei dieser Frage stecken. –

Antwort

5

ich Sie gehe davon sind nur LocalDateTime.toString() verwenden, wobei in diesem Fall the documentation lautet:

Das verwendete Format wird die kürzeste sein, den vollen Wert der Zeit gibt, wo die weggelassenen Teile implizierten Null.

Wenn Sie weitere Ziffern wollen zeigen, auch wenn sie Nullen sind, benötigen Sie einen DateTimeFormatter und verwenden, die statt zu erstellen:

DateTimeFormatter formatter = 
    DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSS"); 

System.out.println(LocalDateTime.now().format(formatter)); 

Ferner LocalDateTime.now() verwendet das System standardmäßig Clock das ist Nur garantiert, Millisekundengenauigkeit zu haben, aber kann einen Takt der höheren Auflösung verwenden, wenn man verfügbar ist. Es ist möglich, dass Ihre Plattform keine Uhr hat, die für die JRE mit einer höheren Auflösung als Millisekunden verfügbar ist.

aktualisieren - Sie können auch eine LocalDateTime mit LocalDateTime.of() erstellen, um sicherzustellen, dass ns gespeichert werden und wird in der Rückgabewert der Standard LocalDateTime.toString()-Methode einbezogen werden:

LocalDateTime when = 
    LocalDateTime.of(2016, Month.AUGUST, 12, 9, 38, 12, 123456789); 

System.out.println(when); 

Der Ausgang des oben wäre :

 
2016-08-12T09:38:12.123456789 
0

Verwenden LocaleDateTime.now().getNano()

Sie tun gerade System.out.println(LocalDateTime.now()). Dies verwendet die Methode toString(), die keine Nanosekunden anzeigt, wenn sie Null sind.

Verwandte Themen