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

时间:2009-12-23 10:07:04

标签: java date formatting locale

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

5 个答案:

答案 0 :(得分:58)

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

所以,例如:

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

请参阅文档以了解样式参数的确切含义(SHORTMEDIUM等)

答案 1 :(得分:13)

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

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

喜欢的东西 new SimpleDateFormat("your-pattern-here", Locale.getDefault());

答案 2 :(得分:2)

约达时间

使用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 的偏移,用于夏令时和其他异常的一组规则及其历史更改。
  • Locale是一种人类语言,如Français,加上一个国家代码,如加拿大,代表文化习俗,包括日期时间字符串的格式。

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

答案 3 :(得分:1)

看看java.text.DateFormat。 派生类java.text.SimpleDateFormat

更易于使用(功率稍低)

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

答案 4 :(得分:1)

我同意Laura和SimpleDateFormat,这是在Java中管理日期的最佳方式。您可以设置模式和区域设置。另外,你可以看看这个wikipedia article about Date in the world - 使用它的方式并不多;通常是美国/中国/世界其他地区 -