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

新手上路,请多包涵

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

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

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

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

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

原文由 Paweł Dyda 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 492
2 个回答

对于 SimpleDateFormat ,您调用 toLocalizedPattern()

编辑:

对于 Java 8 用户:

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

DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);

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

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

原文由 Damian Leszczyński - Vash 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

你可以使用这样的东西:

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

由于从 DateFormat 返回的 getDateInstance()SimpleDateFormat 的实例。这两种方法实际上也应该在 DateFormat 中,这样才不会那么麻烦,但目前还没有。

原文由 Zarremgregarrok 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题