如何获取本地化的日期模式字符串?

使用 DateFormat 的实例格式化和解析 Java Date(或 Calendar)类非常容易。

我可以将当前日期格式化为一个简短的本地化日期,如下所示:

DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
String today = formatter.format(new Date());

我的问题是我需要获取这个本地化的模式字符串(类似于)。"MM/dd/yy"

这应该是一个微不足道的任务,但我就是找不到提供商。


答案 1

对于 SimpleDateFormat,您可以调用LocalizedPattern()

编辑:

对于 Java 8 用户:

Java 8 Date Time API 类似于 Joda-time。为了获得本地化的模式,我们可以使用类DateTimeFormatter。

DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);

请注意,当您在LocalDate上调用String()时,您将获得格式为ISO-8601的日期

请注意,Java 8 中的 Date Time API 的灵感来自 Joda Time,大多数解决方案都可以基于与时间相关的问题。


答案 2

对于那些仍在使用Java 7及更早版本的用户:

您可以使用类似如下的内容:

DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
String pattern       = ((SimpleDateFormat)formatter).toPattern();
String localPattern  = ((SimpleDateFormat)formatter).toLocalizedPattern();

由于返回的 From 是 的实例。这两种方法也应该在DateFormat中,以便不那么黑客化,但它们目前还没有。DateFormatgetDateInstance()SimpleDateFormat