2009-08-27 12 views
19

¿Cómo puedo encontrar el DateFormat para un Locale dado?Formato de fecha Java para configuración regional

+0

FYI, las antiguas clases problemáticas de fecha y hora como 'DateFormat' ahora son [legacy] (https://en.wikipedia.org/wiki/Legacy_system), suplantadas por [java.time] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) classes. Consulte [Tutorial de Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

Respuesta

25
DateFormat.getDateInstance(int,Locale) 

Por ejemplo:

import static java.text.DateFormat.*; 

DateFormat f = getDateInstance(SHORT, Locale.ENGLISH); 

continuación, puede utilizar este objeto a formato Date s:

String d = f.format(new Date()); 

Si realmente quiere saber el patrón subyacente (por ejemplo yyyy-MMM-dd) a continuación, como obtendrá un objeto SimpleDateFormat atrás:

SimpleDateFormat sf = (SimpleDateFormat) f; 
String p1 = sf.toPattern(); 
String p2 = sf.toLocalizedPattern(); 
+1

No creo que haya una garantía de que DateFormat.getDateInstance (...) devuelva un objeto SimpleDateFormat, por lo que convertir el resultado a SimpleDateFormat podría ser peligroso (podría no funcionar en otra implementación de Java que la implementación de Sun, o podría ni siquiera trabaje en una versión diferente de la implementación de Sun). – Jesper

+1

Esto es muy cierto, no hay garantía. Pero será un 'SimpleDateFormat' en la práctica –

+0

FYI, las antiguas clases problemáticas de fecha y hora como' java.text.SimpleDateFormat' ahora son [legacy] (https://en.wikipedia.org/wiki/Legacy_system), suplantado por las clases [java.time] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html). Consulte [Tutorial de Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

-1

¿Hay alguna otra manera (sin usar el molde SimpleDateFormat) para recuperar el patrón predeterminado para un objeto de configuración regional determinado?

Related theme.

+1

Crea una nueva publicación si necesitas hacer una pregunta o haz la pregunta en la sección de comentarios. Estos están reservados para las respuestas a la publicación original. – hfontanez

1

tl; dr

DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL) 
       .withLocale(Locale.CANADA_FRENCH); 

java.time

Las clases originales de fecha y hora son ahora legado y han sido suplantada por las clases java.time.

El DateTimeFormatter tiene una forma simple de localizar automáticamente por Locale al generar una cadena para representar el valor de la fecha y hora. Especifique un FormatStyle para indicar la duración del resultado (abreviado o no).

DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL); 
f = f.withLocale(Locale.CANADA_FRENCH); 

Obtén el momento actual. Tenga en cuenta que Locale y la zona horaria no tienen nada que ver entre sí. Uno determina la presentación, el otro se ajusta en un particular wall-clock time. Por lo tanto, puede tener un huso horario en Nueva Zelanda con un Locale de japonés, o en este caso un huso horario en India con una presentación formateada para que lea una persona quebequense.

ZoneId z = ZoneId.of("Asia/Kolkata"); 
ZonedDateTime zdt = ZonedDateTime.now(z); 

Genera una cadena utilizando ese objeto formateador de localización.

String output = zdt.format(f); 

Sobre java.time

El marco java.time está incorporado en Java 8 y versiones posteriores. Estas clases suplantan a las viejas y problemáticas clases de fecha y hora legacy, como java.util.Date, Calendar, & SimpleDateFormat.

El proyecto Joda-Time, ahora en maintenance mode, recomienda la migración a las clases java.time.

Para obtener más información, consulte el Oracle Tutorial. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.

¿Dónde obtener las clases java.time?

El proyecto se extiende ThreeTen-Extra java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval, YearWeek, YearQuarter y more.

Cuestiones relacionadas