2012-05-29 8 views
10

jsr-310 tiene una práctica clase DateTimeFormatters que le permite construir un DateTimeFormatter. Me gusta especialmente el método pattern(String) - consulte javadocCómo analizar cadenas que no distinguen entre mayúsculas y minúsculas con jsr310 DateTimeFormatter?

Sin embargo, me tocó un problema por el que distingue entre mayúsculas y minúsculas, p.

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

partidos "01-Ene-2012", pero no con "01-ENE-2012" o "01-ene-2012".

Un enfoque sería romper la cuerda y analizar componentes, u otra sería usar Regex para reemplazar las cuerdas insensibles a mayúsculas y minúsculas con la cuerda sensible a mayúsculas y minúsculas.

Pero se siente como que debe haber una manera más fácil ...

Respuesta

14

Y no es ... de acuerdo con el User Guide (sin conexión, ve JavaDoc vez), se debe utilizar DateTimeFormatterBuilder para construir un complejo DateTimeFormatter

por ejemplo

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

Ligeramente más ordenado tercera línea: builder.appendPattern ("dd-MMM-aaaa"); – JodaStephen

+0

@JodaStephen Más fácil de leer ciertamente. – borjab

3

Esta alternativa es ventajosa para las variables estáticas initializating:

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

Parece que se duplica la [respuesta aceptada] (http://stackoverflow.com/a/10797809/642706) de un par de años antes –

Cuestiones relacionadas