如何在Java中按语言环境格式化日期?
我需要将日期格式化为具有多种语言的应用程序,格式化日期的最佳方式是什么,因为每个国家/地区都有不同类型的日期格式,因此可以按区域设置格式化日期吗?
是,使用DateFormat.getDateInstance(int style,Locale aLocale)这将以特定于语言环境的方式显示当前日期。
所以,例如:
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, yourLocale); String formattedDate = df.format(yourDate);
有关样式参数( SHORT
, MEDIUM
等)的确切含义,请参阅文档
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中管理日期的最佳方式。 您可以设置模式和区域设置。 另外,您可以查看这篇维基百科关于世界日期的文章 – 使用它的方式并不多; 通常美国/中国/世界其他地区 –