我正在使用Java 7,我需要显示Java Date
对象的时间部分。
我注意到DateFormat
根据the page有SHORT
常量,页面有以下描述:
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());
答案 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 ) ;