¿Es posible recuperar un patrón predeterminado para una configuración regional determinada, sin convertir un objeto devuelto por DateFormat.get*Instance()
en SimpleDateFormat
?¿Hay alguna otra forma de recuperar el patrón predeterminado para una configuración regional determinada?
Entiendo que en la mayoría de los casos todo estará bien, pero hay una nota en javadoc
, here: "Si desea aún más control sobre el formato o el análisis (o si desea otorgar a sus usuarios más control), Puedes intentar lanzar el DateFormat
que obtienes de los métodos de fábrica a SimpleDateFormat
. Esto funcionará para la mayoría de los países; solo recuerda ponerlo en un bloque try
en caso de que encuentres uno inusual. "
Así que me pregunto, ¿qué debo hacer en caso de que "encuentre una inusual uno"?
Ejemplo de código:
/**
* Returns '\n'-separated string with available patterns.
* Optional adds appropriate language code to each pattern string.
*
* @param showLanguage Defines if language info is required.
* @return String with available patterns, optional (if showLanguage is set
* to "true") adds appropriate language code to each pattern.
*/
public String getPatternsForAvailableLocales(Boolean... showLanguage) {
/* Array of available locales */
Locale[] locales = DateFormat.getAvailableLocales();
String result = "";
for (Locale locale : locales) {
/* Add language info, if necessary */
if ((showLanguage.length > 0) && (showLanguage[0])) {
result += locale.getLanguage() + '\t';
}
/* Retrieving pattern */
try {
result += ((SimpleDateFormat)
DateFormat.getDateTimeInstance(DateFormat.SHORT,
DateFormat.SHORT, locale)).toPattern();
} catch (ClassCastException e) {
// ******************************** //
// What's up? Is there another way? //
// ******************************** //
}
result += '\n';
}
return result;
}
No estoy seguro si puede hacer algo si "encuentra uno inusual" porque puede no estar basado en patrones. Especialmente porque un desarrollador puede proporcionar su propio 'DateFormat' a través de' java.text.spi.DateFormatProvider'. –