Можно ли получить шаблон по умолчанию для данной локали, не приводя объект, возвращенный DateFormat.get * Instance ()
к SimpleDateFormat
?
Я понимаю, что в большинстве случаев все будет хорошо, но в javadoc
, здесь есть примечание: «Если вы хотите еще больше контроля над форматом или синтаксическим анализом (или хотите предоставить своим пользователям больше контроля), Вы можете попробовать привести DateFormat
, полученный из фабричных методов, к SimpleDateFormat
. Это будет работать для большинства стран; просто не забудьте поместить его в блок try
на случай, если вы столкнетесь с необычным . "
Поэтому мне интересно, что мне делать, если я" столкнулся с необычный "?
Пример кода:
/**
* 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;
}