Domyślnie metoda toString
z Instant
używa formatera DateTimeFormatter.ISO_INSTANT. Że formater nie będzie drukować cyfry frakcja-of-sekundę, jeśli zdarzy ci się być 0.Format daty ISO ISO ze stałymi cyframi milimetra (w języku Java 8 i nowszych wersjach)
java-time przykładów:
2015-10-08T17:13:07.589Z
2015-10-08T17:13:07Z
Joda-Time przykłady (i czego można oczekiwać od java.time):
2015-10-08T17:13:07.589Z
2015-10-08T17:13:07.000Z
To jest naprawdę frustrujące, parsować w niektórych systemach. Elasticsearch to pierwszy napotkany problem, nie ma zdefiniowanego formatu, który obsługuje opcjonalne millisy, ale prawdopodobnie mogę obejść to w niestandardowym formacie. Ustawienie domyślne wydaje się błędne.
Wygląda na to, że tak naprawdę nie można tak naprawdę zbudować własnego ciągu formatów dla Instants. Czy jest to jedyna opcja implementująca mój własny java.time.format.DateTimeFormatterBuilder.InstantPrinterParser?
Twoim celem jest znalezienie, czy data ma dokładność milisekundy? –
Celem jest sformatowanie tej daty z ułamkową drugą częścią, nawet jeśli te milisekundy są równe 0. Innymi słowy, naśladuj to, co robi Joda. –
Przypomnienie: java.time zapewnia rozdzielczość [nanosekund] (https://en.wikipedia.org/wiki/Nanosecond), w przeciwieństwie do rozdzielczości Jules-Time i java.util.Date w milisekundach. Oznacza to do dziewięciu (9) cyfr ułamkowej sekundy. Więc jeśli ograniczysz do 3, możesz ukrywać/tracić dane. Zobacz [ten schemat] (http://i.stack.imgur.com/OW0RW.png). –