【发布时间】:2009-12-23 10:07:04
【问题描述】:
我需要将日期格式化为具有多种语言的应用程序,格式化日期的最佳方式是什么,因为每个国家/地区都有不同类型的日期格式,所以可以按区域设置日期吗?
【问题讨论】:
标签: java date formatting locale
我需要将日期格式化为具有多种语言的应用程序,格式化日期的最佳方式是什么,因为每个国家/地区都有不同类型的日期格式,所以可以按区域设置日期吗?
【问题讨论】:
标签: java date formatting locale
是的,使用DateFormat.getDateInstance(int style, Locale aLocale) 这会以特定于区域设置的方式显示当前日期。
所以,例如:
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, yourLocale);
String formattedDate = df.format(yourDate);
请参阅文档以了解样式参数的确切含义(SHORT、MEDIUM 等)
【讨论】:
getTimeInstance()
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”表示完整。通过指定样式字符“-”连字符可以省略日期或时间。
请注意,我们同时指定了区域设置和时区。有些人混淆了这两者。
我们需要所有这些部分来正确生成日期时间值的字符串表示。
【讨论】:
看看java.text.DateFormat。 派生类java.text.SimpleDateFormat
更易于使用(功率稍小)这里是 Java 国际化的一个很好的介绍:http://java.sun.com/docs/books/tutorial/i18n/index.html(“格式化”部分解决了您的问题,等等)。
【讨论】:
我同意 Laura 和 SimpleDateFormat,这是在 java 中管理日期的最佳方式。您可以设置模式和区域设置。另外,您可以看看这个wikipedia article about Date in the world - 没有太多不同的使用方法;通常是美国/中国/世界其他地区-
【讨论】: