Pregunta sobre java, android – ¿Cómo puedo obtener el patrón de formato de fecha y hora predeterminado?

8

Alguien podría decirme cómo puedo obtener el patrón de formato de fecha y hora predeterminado (Cadena) para la configuración regional específica (o la configuración regional predeterminada)

Lo que ya encontré (podría ser útil para otra persona):

Cómo obtener la configuración regional predeterminada.

<code>Locale currentLocale= Locale.getDefault();
System.out.print(currentLocale.toString());

Result is "en_US"
</code>

Cómo obtener separador decimal.

<code>DecimalFormatSymbols decimalFormatSymbols =
                                     new DecimalFormatSymbols(currentLocale);
System.out.print(decimalFormatSymbols.getDecimalSeparator());

Result is "."
</code>

Cómo obtener el patrón de formato de fecha y hora predeterminado (cadena);

<code>(do something)
System.out.print(something);
And got at output something like this: "dd/mm/yyyy" or "hh:mm:ss".. 
                             or other values for specified locale.
</code>

Muchas gracias.

UPD: Solución encontrada:

<code>SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
String dateLocalizedFormatPattern = simpleDateFormat.toLocalizedPattern();

The result of System.out.print(dateLocalizedFormatPattern) 
                                             on my device is "M/d/yy h:mm a".
</code>
revisa mi respuesta dada enstackoverflow.com/questions/10204291/… Khan

Tu respuesta

2   la respuesta
0

DateFormat clase. Revisar lagetDateInstance(int, Locale) método.

3

Actualizar

Como menciona Russian Bear en su actualización de la pregunta, hay untoLocalizedPattern() método enSimpleDateFormat que devuelve la cadena de formato.

Respuesta original

SimpleDateFormatusa el siguiente código en su constructor privado:

<code>...
ResourceBundle r = LocaleData.getDateFormatData(loc);
if (!isGregorianCalendar()) {
    try {
        dateTimePatterns = r.getStringArray(getCalendarName() + ".DateTimePatterns");
    } catch (MissingResourceException e) {
    }
}
if (dateTimePatterns == null) {
    dateTimePatterns = r.getStringArray("DateTimePatterns");
}
...
</code>

Así que las cadenas de formato reales parecen estar en unResourceBundleaccedido a través de laLocaleData.getDateFormatData()método.

Desafortunadamente, elLocaleDataLa clase es parte de lo interno.sun.util.resources paquete.

Tu respuesta me llevó a eso :-) Russian Bear
Johan, muchas gracias! Russian Bear
¿Qué pasa si solo quiero imprimir la fecha que dice la parteM/d/yy sin la parte de tiempo, como en la salida de muestra:h:mm a? Gelin Luo
Supongo que podrías hacerdateLocalizedFormatPattern.split(" ")[0], pero eso solo funcionará si el formato separa la fecha y la hora con un espacio. No sé si hay una forma genérica de obtener solo la parte de fecha de un formato de fecha. Johan Kaving
Pero veo que encontraste la solución real que me perdí en SimpleDateFormat :-) Johan Kaving

Preguntas relacionadas