文档

Java™ 教程-Java Tutorials 中文版
使用预定义格式
Trail: Internationalization
Lesson: Formatting
Section: Dates and Times

使用预定义格式


版本说明: 此日期和时间部分使用 java.util 包中的日期和时间 API。JDK 8 发行版中提供的 java.time API 提供了一个全面的日期和时间模型,它比 java.util 类提供了重大改进。java.time API 在 Date Time 路径中描述。Legacy Date-Time Code 页面可能特别有用。

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

Previous page: Dates and Times
Next page: Customizing Formats