Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
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 类提供的预定义格式样式之一,如下所示:
下表显示了如何使用美国和法国语言环境为每种样式设置日期格式:
| Style | 美国语言环境 | 法国语言环境 |
|---|---|---|
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);
下表显示了美国和德国语言环境的各种预定义格式样式:
| Style | 美国语言环境 | 德国语言环境 |
|---|---|---|
DEFAULT |
7:03:47 AM | 7:03:47 |
SHORT |
7:03 AM | 07:03 |
MEDIUM |
7:03:47 AM | 07:03:07 |
LONG |
7:03:47 AM PDT | 07:03:45 PDT |
FULL |
7:03:47 AM PDT | 7.03Uhr PDT |
要在相同的 String 中显示日期和时间,请使用 getDateTimeInstance 方法创建格式化程序。第一个参数是日期样式,第二个参数是时间样式。第三个参数是 Locale。这是一个简单的例子:
DateFormat formatter = DateFormat.getDateTimeInstance(
DateFormat.LONG,
DateFormat.LONG,
currentLocale);
下表显示了美国和法国语言环境的日期和时间格式样式:
| Style | 美国语言环境 | 法国语言环境 |
|---|---|---|
DEFAULT |
Jun 30, 2009 7:03:47 AM | 30 juin 2009 07:03:47 |
SHORT |
6/30/09 7:03 AM | 30/06/09 07:03 |
MEDIUM |
Jun 30, 2009 7:03:47 AM | 30 juin 2009 07:03:47 |
LONG |
June 30, 2009 7:03:47 AM PDT | 30 juin 2009 07:03:47 PDT |
FULL |
Tuesday, June 30, 2009 7:03:47 AM PDT | mardi 30 juin 2009 07 h 03 PDT |