如何在Java中按区域设置格式化日期?

如何在Java中按区域设置格式化日期?,java,date,formatting,locale,Java,Date,Formatting,Locale,我需要将日期格式化为具有多种语言的应用程序,格式化日期的最佳方式是什么,因为每个国家都有不同类型的日期格式,所以可以按区域设置格式化日期吗?SimpleDataFormat有一个采用区域设置的构造函数,您尝试过吗 差不多 newsimpledateformat(“您的模式在这里”,Locale.getDefault())是,使用 这将以特定于区域设置的方式显示当前日期 例如: DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT

我需要将日期格式化为具有多种语言的应用程序,格式化日期的最佳方式是什么,因为每个国家都有不同类型的日期格式,所以可以按区域设置格式化日期吗?

SimpleDataFormat有一个采用区域设置的构造函数,您尝试过吗

差不多
newsimpledateformat(“您的模式在这里”,Locale.getDefault())

是,使用 这将以特定于区域设置的方式显示当前日期

例如:

DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, yourLocale);
String formattedDate = df.format(yourDate);
有关样式参数(
SHORT
MEDIUM
等)的确切含义,请参见文档。

请查看。 派生类更易于使用(功耗稍低)


这里是Java国际化的一个很好的介绍:(解决您的问题的“格式化”部分,等等)。

我同意Laura和SimpleDataFormat,这是Java中管理日期的最佳方法。您可以设置模式和区域设置。另外,你可以看看这个-没有那么多不同的使用方法;通常为美国/中国/世界其他地区-

Joda Time 使用2.4库。
DateTimeFormat
类是
DateTimeFormatter
格式化程序的工厂。该类提供了一种方法来访问适合于
区域设置的格式化程序

DateTimeFormatter formatter = DateTimeFormat.forStyle( "MM" ).withLocale( Java.util.Locale.CANADA_FRENCH );
String output = formatter.print( DateTime.now( DateTimeZone.forID( "America/Montreal" ) ) );
带有两个字母的参数指定日期部分和时间部分的格式。为短样式指定“S”,为中样式指定“M”,为长样式指定“L”,为全样式指定“F”。可以通过指定样式字符“-”连字符来输入日期或时间

请注意,我们同时指定了区域设置和时区。有些人把两者混为一谈

  • 时区是UTC的偏移量,是夏令时和其他异常及其历史变化的一组规则
  • 区域设置是一种人类语言,如法语,加上一种国家代码,如加拿大,代表文化习俗,包括日期时间字符串的格式

我们需要所有这些片段来正确生成日期-时间值的字符串表示。

特别是对于来自不同国家/地区的i18n应用程序,只有@Bozho的解决方案才有效,因为您不知道需要使用的“模式”如何在其中包括分和秒?这将是有用的,因为只是一天有点太粗糙。编辑:无需担心,它与
getTimeInstance()一起使用。