文档

Java™教程
隐藏目录
使用预定义格式
路径:国际化
课程:格式化
章节:日期和时间

使用预定义格式


版本说明: 此日期和时间部分使用java.util包中的日期和时间API。JDK 8版本中提供了java.time API,它提供了一个全面的日期和时间模型,相比java.util类有很大的改进。java.time API的详细信息请参考日期和时间教程。可能会对旧版日期时间代码页面感兴趣。

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

上一页: 日期和时间
下一页: 自定义格式化