Est-il possible de récupérer un modèle par défaut pour un environnement local donné, sans convertir un objet renvoyé par DateFormat.get*Instance()
en SimpleDateFormat
? Je comprends que dans la plupart des cas, tout ira bien, mais il y a une note dans javadoc
, here: "Si vous voulez encore plus de contrôle sur le format ou l'analyse, (ou si vous voulez donner plus de contrôle à vos utilisateurs), vous pouvez essayer de couler le DateFormat
vous obtenez des méthodes d'usine à un SimpleDateFormat
.Cela fonctionnera pour la majorité des pays, souvenez-vous simplement de le mettre dans un bloc try
au cas où vous rencontrez un inhabituel. "Existe-t-il un autre moyen de récupérer le modèle par défaut pour un environnement local donné?
Donc, je me demande, que dois-je faire dans le cas où je "rencontrer un inhabituel"?
Exemple de code:
/**
* 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;
}
Je ne suis pas sûr si vous pouvez faire quelque chose si vous "rencontrez un inhabituel", car il peut ne pas être basé sur un modèle. Surtout parce qu'un développeur peut fournir son propre 'DateFormat' via' java.text.spi.DateFormatProvider'. –