如何根据DateFormat.SHORT和locale显示Date对象的时间?

时间:2015-02-14 06:20:35

标签: java date java-7

我正在使用Java 7,我需要显示Java Date对象的时间部分。

我注意到DateFormat根据the pageSHORT常量,页面有以下描述:

  

SHORT是完全数字的,例如12.13.52或3:30 pm

我的问题是如何只显示时间部分(例如" 3:30 pm")。以下是我所拥有的,它只显示日期部分(例如2/14/15):

DateFormat f = DateFormat.getDateInstance(DateFormat.SHORT, A_Locale_object);
SimpleDateFormat sf = (SimpleDateFormat) f;
sf.format(new Date());

4 个答案:

答案 0 :(得分:3)

如果您要显示的内容是时间部分,则需要调用的内容为getTimeInstance(),而不是getDateInstance()

这是您应该学会自己找到的答案,只需阅读the javadoc

  

使用getDateInstance获取该国家/地区的正常日期格式。还有其他可用的静态工厂方法。使用getTimeInstance获取该国家/地区的时间格式。使用getDateTimeInstance获取日期和时间格式。

答案 1 :(得分:1)

所以如果你想显示时间部分,你可以做的是提供SimpleDatFormat的格式和你的语言环境,如下所示
SimpleDateFormat sf = new SimpleDateFormat("hh:mm a", your_locale);
并像你一样格式化它 sd.format(new Date()));
如果您希望格式化更多内容,您绝对可以添加更多内容,例如"YY.MM.dd hh:mm a" 您可以阅读SimpleDateFormat文档以获取更多信息http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

答案 2 :(得分:1)

使用getTimeInstance代替getDateInstance

DateFormat f = DateFormat.getTimeInstance(DateFormat.SHORT,Locale.getDefault());

答案 3 :(得分:1)

时区

问题和其他答案忽略了时区的关键问题。如果未指定,则会自动应用JVM的当前默认时区。

约达时间

使用Joda-Time库,这样的工作更容易。

使用Joda-Time 2.7的示例。

将java.util.Date对象转换为Joda-Time DateTime对象。与Date不同,DateTime了解其指定的时区。我们希望从Date对象的UTC区域调整到所需的区域,例如蒙特利尔。

DateTimeZone zone = DateTimeZone.forID( "America/Montreal" ) ;
DateTime dateTime = new DateTime( yourDate, zone ) ;

生成此日期时间值的字符串表示形式。传递给forStyle的一对字符控制日期部分和时间部分的完整,长,短等格式。连字符会抑制该部分的显示。

DateTimeFormatter formatter = DateTimeFormat.forStyle( "-S" ).withLocale( Locale.CANADA_FRENCH ) ;
String output = formatter.print( dateTime ) ;