Per impostazione predefinita, il metodo toString
di Instant
utilizza il formatter DateTimeFormatter.ISO_INSTANT. Che formattatore non stamperà le cifre per la frazione-di-secondo se capita di essere 0.java.time Formato data ISO con cifre millisecure fisse (in Java 8 e versioni successive)
java-time esempi:
2015-10-08T17:13:07.589Z
2015-10-08T17:13:07Z
Joda-Time esempi (e quello che mi aspetto da java.time):
2015-10-08T17:13:07.589Z
2015-10-08T17:13:07.000Z
Questo è davvero frustrante per analizzare in alcuni sistemi. Elasticsearch è stato il primo problema che ho riscontrato, non esiste un formato predefinito che supporti i millis facoltativi, ma probabilmente posso aggirarlo con un formato personalizzato. L'impostazione predefinita sembra sbagliata.
Sembra che non sia possibile creare la propria stringa di formato per Instants in ogni caso. È l'unica opzione che implementa il mio java.time.format.DateTimeFormatterBuilder.InstantPrinterParser?
Il tuo obiettivo è scoprire se la data ha una precisione millisecondo? –
L'obiettivo è formattare quella data con la seconda parte frazionaria anche se quei millisecondi sono uguali a 0. In altre parole, imitare ciò che fa Joda. –
Promemoria rapido: java.time fornisce una risoluzione di [nanosecondi] (https://en.wikipedia.org/wiki/Nanosecond), in contrasto con la risoluzione dei millisecondi di Joda-Time e java.util.Date. Ciò significa fino a nove (9) cifre di un secondo frazionario. Quindi, se limiti a 3, potresti nascondere/perdere dati. Vedi [questo mio schema] (http://i.stack.imgur.com/OW0RW.png). –