2012-05-29 12 views
10

jsr-310 ha una classe utile DateTimeFormatters che consente di creare un DateTimeFormatter. Mi piace particolarmente il metodo pattern(String) - vedi javadocCome analizzare stringhe maiuscole e minuscole con jsr310 DateTimeFormatter?

Tuttavia, ho riscontrato un problema per il quale è sensibile al maiuscolo e al minuscolo - ad es.

DateTimeFormatters.pattern("dd-MMM-yyyy"); 

incontri "01-gen-2012", ma non con "01-GEN-2012" o "01-gen-2012".

Un approccio sarebbe quello di rompere la stringa verso il basso e analizzare i componenti, o un altro sarebbe utilizzare Regex per sostituire le stringhe senza distinzione tra maiuscole e minuscole con la stringa sensibile al maiuscolo/minuscolo.

Ma ci si sente come se ci deve essere un modo più semplice ...

risposta

14

E c'è ... secondo il User Guide (offline, vedi JavaDoc invece), è necessario utilizzare DateTimeFormatterBuilder per costruire un complesso DateTimeFormatter

ad es.

DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder(); 
builder.parseCaseInsensitive(); 
builder.appendPattern("dd-MMM-yyyy"); 
DateTimeFormatter dateFormat = builder.toFormatter(); 
+3

leggermente più ordinato terza riga: builder.appendPattern ("dd-MMM-aaaa"); – JodaStephen

+0

@JodaStephen Più facile da leggere sicuramente. – borjab

3

Questa alternativa è utile per le variabili statiche initializating:

DateTimeFormatter myFormatter = new DateTimeFormatterBuilder() 
           .parseCaseInsensitive() 
           .appendPattern("dd-MMM-yyyy") 
           .toFormatter(Locale.ENGLISH); 
+3

Sembra duplicare la [risposta accettata] (http://stackoverflow.com/a/10797809/642706) di un paio d'anni prima –