Question

Est-il possible de récupérer un modèle par défaut pour un endroit donné, sans jeter un objet retourné par DateFormat.get*Instance() à un SimpleDateFormat?

Je comprends que, dans la plupart des cas tout sera OK, mais il y a une note dans javadoc,

Alors je me demande, que dois-je faire au cas où je " rencontre inhabituelle "?

thème connexe.

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;
}
Était-ce utile?

La solution

Vous pouvez récupérer les symboles de format de date pour une langue particulière en exécutant le code Java suivant:

System.out.println(DateFormatSymbols.getInstance
        (new Locale("en_US")).getLocalPatternChars());
System.out.println(DateFormatSymbols.getInstance
        (new Locale("nl_NL")).getLocalPatternChars());

Dans ce cas particulier, le néerlandais, les symboles de format de date sont les mêmes.

GyMdkHmsSEDFwWahKzZ
GyMdkHmsSEDFwWahKzZ

Dans le cas où les symboles de la langue étrangère sont différents, vous substituer le caractère de langue étrangère pour le caractère anglais dans la chaîne de format simple.

La classe DateFormatSymbols existe depuis au moins Java 1.4.2.

Autres conseils

Le modèle lui-même est unique à SimpleDateFormat qui est la raison pour laquelle vous le jeter.

Si vous trouvez un DateFormat qui ne SimpleDateFormat vous voulez enregistrer l'exception, l'enregistrement de la classe la mise en œuvre effective est, et à ce moment-là, vous aurez suffisamment d'informations pour décider comment gérer la situation.

Pour l'instant, car il n'y a pas de modèle ne pas ajouter celui-ci à la liste des résultats si ce n'est pas SimpleDateFormat.

Si je peux demander, Pourquoi vous retourne une chaîne concaténée au lieu d'une collection de chaînes? Il semble que ce serait plus facile de boucle à travers vos résultats.

Si la chaîne concaténée est essentiel, utiliser StringBuilder pour construire puisque vous allez créer moins d'objets et d'améliorer les performances. Il est une bonne habitude d'être quand la construction de chaînes dans une boucle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top