Czy można pobrać wzorzec domyślny dla danych ustawień narodowych, bez rzucania obiektu zwróconego przez DateFormat.get*Instance()
do ?Czy istnieje inny sposób na odzyskanie domyślnego wzorca dla danego ustawienia narodowego?
Rozumiem, że w większości przypadków, wszystko będzie OK, ale jest notatka w javadoc
, here: „Jeśli chcesz jeszcze większą kontrolę nad formatem lub analizowania, (lub chcesz dać użytkownikom więcej kontroli), możesz spróbować rzucić DateFormat
, który otrzymałeś z fabrycznych metod na SimpleDateFormat
. To zadziała w większości krajów; pamiętaj tylko, aby umieścić go w bloku try
, jeśli napotkasz na nietypowy. "
Zastanawiam się, co powinienem zrobić, gdybym "napotkał niecodzienny"?
przykładowy kod:
/**
* 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;
}
Nie jestem pewien, czy możesz zrobić coś, jeśli "napotkasz coś niezwykłego", ponieważ może nie być oparty na wzorcach. Zwłaszcza, że programista może dostarczyć własny "DateFormat" za pośrednictwem 'java.text.spi.DateFormatProvider'. –