是否有另一种方法来检索给定语言环境的默认模式?

Mil*_*rer 6 java locale simpledateformat

是否可以检索给定语言环境的默认模式,而不会将返回的对象DateFormat.get*Instance()转换为SimpleDateFormat

据我所知,在大多数情况下,一切都会好的,但有一个音符javadoc,在这里:"如果你想在格式或分析更精确的控制,(或者希望给用户更多的控制),可以尝试铸造DateFormat你从工厂的方法到a 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;
}
Run Code Online (Sandbox Code Playgroud)

Gil*_*anc 1

您可以通过执行以下 Java 代码来检索特定语言的日期格式符号:

System.out.println(DateFormatSymbols.getInstance
        (new Locale("en_US")).getLocalPatternChars());
System.out.println(DateFormatSymbols.getInstance
        (new Locale("nl_NL")).getLocalPatternChars());
Run Code Online (Sandbox Code Playgroud)

在这种特殊情况下,荷兰语的日期格式符号是相同的。

GyMdkHmsSEDFwWahKzZ
GyMdkHmsSEDFwWahKzZ
Run Code Online (Sandbox Code Playgroud)

如果外语符号不同,则可以用外语字符替换简单格式字符串中的英语字符。

该类DateFormatSymbols至少从 Java 1.4.2 就已经存在。