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

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

我理解,在大多数情况下一切都会好的,但是在javadoc有一个注释, 这里 :“如果你想要更多地控制格式或解析,(或者想让你的用户更多地控制),你可以试试从工厂方法到SimpleDateFormatDateFormat 。这适用于大多数国家; 只要记住将它放在try块中,以防遇到exception的问题 。“

所以我想知道,如果我遇到一个不寻常的人 ,我该怎么办?

相关主题。

代码示例:

 /** * 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; } 

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

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

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

 GyMdkHmsSEDFwWahKzZ GyMdkHmsSEDFwWahKzZ 

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

DateFormatSymbols类至少存在于Java 1.4.2之后。

模式本身是SimpleDateFormat独有的,这就是你投射它的原因。

如果你发现一个不是SimpleDateFormat的DateFormat,你想记录exception,记录实际实现的类,那时你将有足够的信息来决定如何处理这种情况。

目前,由于没有模式,如果它不是SimpleDateFormat,则不要将此结果添加到结果列表中。

如果我可以问,为什么要返回串联字符串而不是字符串集合? 看起来循环结果会更容易。

如果连接的字符串是必不可少的,请使用StringBuilder来构建它,因为您将创建更少的对象并提高性能。 在循环中构建字符串时,这是一个很好的习惯。