4

根据有关Android 4.3的消息

为了帮助您管理跨区域设置的日期格式,Android 4.3 包含一个新的getBestDateTimePattern()方法,该方法会自动为您指定的区域设置生成最佳本地化形式的 Unicode UTS 日期。这是为您的用户提供更加本地化的体验的便捷方式。

我该如何使用这种方法?我找不到。

4

2 回答 2

1

7½ 年后,这里有一个实际例子的答案!;-)

Locale locale = Locale.getDefault();
String skeleton = DateFormat.getBestDateTimePattern(locale, "MMMM d, YYYY");

然后,使用 java.time:

Instant.now().atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern(skeleton));

或使用遗留类:

Date now = Calendar.getInstance().getTime();
SimpleDateFormat dateTimeFormatter = new SimpleDateFormat(skeleton, locale);
dateTimeFormatter.setTimeZone(TimeZone.getDefault());
dateTimeFormatter.applyLocalizedPattern(skeleton);
dateTimeFormatter.format(now);
于 2021-01-26T12:57:06.377 回答
-1

文档

公共静态字符串 getBestDateTimePattern(区域设置语言环境,字符串骨架)

在 API 级别 18 中添加

返回给定语言环境的给定骨架的最佳本地化形式。骨架类似于 Unicode UTS #35 模式,并使用相同的格式字符。

一个区别是顺序无关紧要。例如,“MMMMd”将在 en_US 语言环境中返回“MMMM d”,但在 de_CH 语言环境中返回“d. MMMM”。

另请注意,在第二个示例中,添加了德语的必要标点符号。对于 es_ES 中的相同输入,我们会有更多额外的文本:“d 'de' MMMM”。

此方法将根据语法需要自动更正。给定相同的“MMMMd”输入,此方法将在 fa_IR 语言环境中返回“d LLLL”,其中需要独立的月份。长度在有意义的地方被保留,因此“Md”会给出与“MMMd”不同的结果,例如,除了在只有一个月份长度的 ja_JP 等语言环境中。

此方法将仅返回 CLDR 中的模式,并且在您知道格式字符串中需要哪些元素但不想使您的代码特定于任何一个语言环境时非常有用。

参数

locale:应该将骨架本地化到的语言环境

骨架:如上所述的骨架

退货

适合与 SimpleDateFormat 一起使用的字符串模式。

于 2013-07-26T00:40:17.893 回答