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 |