Ho bisogno di convertire una stringa in LocalTime (java-8 non joda) che potrebbe o non può avere nanoOfSeconds nella stringa. Il formato Stringa è nel formato 07:06:05
o 07:06:05.123456
La stringa può avere o meno una posizione decimale nei secondi e quando lo fa ci potrebbe essere un numero qualsiasi di caratteri per rappresentare la parte Nano Secondi.Coverting String to LocalTime con/senza nanoOfSeconds
Utilizzando un DateTimeForamtter come
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss");
o
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS");
posso utilizzare un'istruzione IF per distinguere tra i due formati, quali:
DateTimeFormatter dtf;
if (time1.contains(".") {
dtf = DateTimeFormatter.ofPattern("H:mm:ss.SSSSSS);
} else {
dtf = DateTimeFormatter.ofPattern("H:mm:ss);
}
Questo funziona bene e Sto bene con questo, ma ho bisogno di essere in grado di utilizzare anche un numero variabile di posizioni dopo il punto decimale t.
Un insieme di dati di esempio potrebbe essere:
[11:07:59.68750, 11:08:00.781250, 11:08:00.773437500, 11:08:01]
Esiste un modo per permettere al formattatore per analizzare qualsiasi numero di cifre dopo la virgola senza di essa gettando un java.time.format.DateTimeParseException
quando il numero di cifre decimali è sconosciuto?
Spero di perdere qualcosa di veramente semplice.
per rispondere alla prima domanda, sembra che si possa semplicemente testare la lunghezza della stringa 'if (stringValue.length()> 7) {// usa il secondo formattatore} else if (stringValue.length() == 7) {// usa il primo formattatore} 'Non sono sicuro di capire la seconda domanda, potresti elaborare? –
Non capisco neanche il secondo - spero che sia irrilevante vista la mia risposta al primo :) –
Sembra brutto dover controllare un determinato numero di posti e decidere un formato basato su quello. Sembra logico avere un formattatore che fosse un po 'meno rigido sul numero di caratteri (ma di nuovo abbiamo a che fare con le stringhe) – jbolt