如何根据 DateFormat.SHORT 和语言环境显示 Date 对象的时间?
How to display the time of a Date object based on DateFormat.SHORT and locale?
我正在使用 Java 7,我需要显示 Java Date
对象的时间部分。
我注意到 DateFormat
根据 the page 具有 SHORT
常量并且页面具有以下描述:
SHORT
is completely numeric, such as 12.13.52 or 3:30pm
我的问题是如何只显示时间部分(比如“3:30pm”)。以下是我的,它只显示日期部分(例如 2/14/15):
DateFormat f = DateFormat.getDateInstance(DateFormat.SHORT, A_Locale_object);
SimpleDateFormat sf = (SimpleDateFormat) f;
sf.format(new Date());
如果你要显示的是时间部分,你需要调用的是getTimeInstance()
,而不是getDateInstance()
。
这是您应该学会自己找到的答案,只需阅读 the javadoc:
Use getDateInstance to get the normal date format for that country. There are other static factory methods available. Use getTimeInstance to get the time format for that country. Use getDateTimeInstance to get a date and time format.
因此,如果您想显示时间部分,您可以将格式提供给 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
使用 getTimeInstance
代替 getDateInstance
。
DateFormat f = DateFormat.getTimeInstance(DateFormat.SHORT,Locale.getDefault());
时区
问题和其他答案忽略了时区这个关键问题。如果未指定,则自动应用 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 ) ;
我正在使用 Java 7,我需要显示 Java Date
对象的时间部分。
我注意到 DateFormat
根据 the page 具有 SHORT
常量并且页面具有以下描述:
SHORT
is completely numeric, such as 12.13.52 or 3:30pm
我的问题是如何只显示时间部分(比如“3:30pm”)。以下是我的,它只显示日期部分(例如 2/14/15):
DateFormat f = DateFormat.getDateInstance(DateFormat.SHORT, A_Locale_object);
SimpleDateFormat sf = (SimpleDateFormat) f;
sf.format(new Date());
如果你要显示的是时间部分,你需要调用的是getTimeInstance()
,而不是getDateInstance()
。
这是您应该学会自己找到的答案,只需阅读 the javadoc:
Use getDateInstance to get the normal date format for that country. There are other static factory methods available. Use getTimeInstance to get the time format for that country. Use getDateTimeInstance to get a date and time format.
因此,如果您想显示时间部分,您可以将格式提供给 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
使用 getTimeInstance
代替 getDateInstance
。
DateFormat f = DateFormat.getTimeInstance(DateFormat.SHORT,Locale.getDefault());
时区
问题和其他答案忽略了时区这个关键问题。如果未指定,则自动应用 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 ) ;