这些Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
有关Java SE 9及其后续版本中更新的语言特性的摘要,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息,请参阅JDK发行说明。
DateFormat
类允许您以与区域设置相关的方式使用预定义样式格式化日期和时间。下面的部分将演示如何使用DateFormat
类和一个名为DateFormatDemo.java
的程序。
使用DateFormat
类格式化日期是一个两步过程。首先,使用getDateInstance
方法创建一个格式化程序。然后,调用format
方法,该方法返回一个包含格式化后的日期的String
。下面的示例通过调用这两个方法格式化今天的日期:
Date today; String dateOut; DateFormat dateFormatter; dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT, currentLocale); today = new Date(); dateOut = dateFormatter.format(today); System.out.println(dateOut + " " + currentLocale.toString());
此代码生成的输出如下所示。注意,日期的格式因Locale
而异。由于DateFormat
是与区域设置相关的,它会为每个Locale
处理格式化细节。
30 juin 2009 fr_FR 30.06.2009 de_DE Jun 30, 2009 en_US
上面的代码示例指定了DEFAULT
格式化样式。DEFAULT
样式只是DateFormat
类提供的预定义格式化样式之一,如下所示:
下表显示了每种样式在美国和法国区域设置下的日期格式:
样式 | 美国区域设置 | 法国区域设置 |
---|---|---|
DEFAULT |
Jun 30, 2009 | 30 juin 2009 |
SHORT |
6/30/09 | 30/06/09 |
MEDIUM |
Jun 30, 2009 | 30 juin 2009 |
LONG |
June 30, 2009 | 30 juin 2009 |
FULL |
Tuesday, June 30, 2009 | mardi 30 juin 2009 |
Date
对象表示日期和时间。使用DateFormat
类格式化时间与格式化日期类似,只是要使用getTimeInstance
方法创建格式化器,如下所示:
DateFormat timeFormatter = DateFormat.getTimeInstance(DateFormat.DEFAULT, currentLocale);
下表展示了美国和德国地区的各种预定义格式样式:
样式 | 美国地区 | 德国地区 |
---|---|---|
DEFAULT |
上午7:03:47 | 上午7:03:47 |
SHORT |
上午7:03 | 上午07:03 |
MEDIUM |
上午7:03:47 | 上午07:03:07 |
LONG |
上午7:03:47 PDT | 上午07:03:45 PDT |
FULL |
上午7:03:47 PDT | 上午7.03时 PDT |
要在同一个String
中显示日期和时间,可以使用getDateTimeInstance
方法创建格式化器。第一个参数是日期样式,第二个参数是时间样式。第三个参数是Locale
。以下是一个快速示例:
DateFormat formatter = DateFormat.getDateTimeInstance( DateFormat.LONG, DateFormat.LONG, currentLocale);
下表展示了美国和法国地区的日期和时间格式样式:
样式 | 美国地区 | 法国地区 |
---|---|---|
DEFAULT |
2009年6月30日 上午7:03:47 | 2009年6月30日 07:03:47 |
SHORT |
6/30/09 上午7:03 | 30/06/09 07:03 |
MEDIUM |
2009年6月30日 上午7:03:47 | 2009年6月30日 07:03:47 |
LONG |
2009年6月30日 上午7:03:47 PDT | 2009年6月30日 07:03:47 PDT |
FULL |
2009年6月30日 星期二 上午7:03:47 PDT | 2009年6月30日 星期二 07时03分 PDT |