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