如何在Java中按语言环境格式化日期?

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

是,使用DateFormat.getDateInstance(int style,Locale aLocale)这将以特定于语言环境的方式显示当前日期。

所以,例如:

DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, yourLocale); String formattedDate = df.format(yourDate); 

有关样式参数( SHORTMEDIUM等)的确切含义,请参阅文档

SimpleDateFormat有一个构造函数,它接受了语言环境,你试过吗?

http://java.sun.com/javase/6/docs/api/java/text/SimpleDateFormat.html

new SimpleDateFormat("your-pattern-here", Locale.getDefault());

乔达时间

使用Joda-Time 2.4库。 DateTimeFormat类是DateTimeFormatter格式化程序的工厂。 该类提供了一个forStyle方法来访问适用于Locale格式化程序。

 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’。 通过指定样式字符’ – ‘HYPHEN可以省略日期或时间。

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

  • 时区是与UTC的偏移量, 以及夏令时和其他exception的一组规则及其历史变化。
  • Locale是一种人类语言,如Français,加上一个国家代码,如加拿大,代表文化习俗,包括日期时间字符串的格式。

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

看看java.text.DateFormat 。 派生类java.text.SimpleDateFormat更易于使用(功耗稍低)

这里有一个很好的Java国际化介绍: http : //java.sun.com/docs/books/tutorial/i18n/index.html (解决问题的“格式化”部分,等等)。

我同意Laura和SimpleDateFormat,这是在Java中管理日期的最佳方式。 您可以设置模式和区域设置。 另外,您可以查看这篇维基百科关于世界日期的文章 – 使用它的方式并不多; 通常美国/中国/世界其他地区 –