使用 预定义格式

Version note:

此日期和时间部分使用java\.util包中的日期和时间 API。 JDK 8 版本中提供的java\.time API 提供了一个全面的日期和时间模型,该模型对java\.util类进行了重大改进。 Date Time路径中描述了java\.time API。 旧版日期时间代码页面可能特别有趣。

DateFormat类允许您以对语言环境敏感的方式使用 预定义的样式来格式化日期和时间。以下各节说明如何将DateFormat类与名为DateFormatDemo.java的程序一起使用。

Dates

使用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

  • SHORT

  • MEDIUM

  • LONG

  • FULL

下表显示了如何在美国和法国语言环境中设置每种样式的日期格式:

samples 日期格式

StyleU.S. LocaleFrench Locale
DEFAULT2009 年 6 月 30 日30 2009 年 6 月
SHORT6/30/0930/06/09
MEDIUM2009 年 6 月 30 日30 2009 年 6 月
LONG2009 年 6 月 30 日30 2009 年 6 月
FULL2009 年 6 月 30 日,星期二2009 年 3 月 30 日狂欢

Times

Date对象代表日期和时间。 DateFormat类的格式化时间与格式化日期类似,不同之处在于,您使用getTimeInstance方法创建格式化程序,如下所示:

DateFormat timeFormatter =
    DateFormat.getTimeInstance(DateFormat.DEFAULT, currentLocale);

下表显示了美国和德国语言环境的各种 预定义格式样式:

采样时间格式

StyleU.S. LocaleGerman Locale
DEFAULT7:03:47 AM7:03:47
SHORT7:03 AM07:03
MEDIUM7:03:47 AM07:03:07
LONG太平洋标准时间 7:03:47 AM07:03:45 PDT
FULL太平洋标准时间 7:03:47 AM7 .03 UPDT

日期和时间

要在同一String中显示日期和时间,请使用getDateTimeInstance方法创建格式化程序。第一个参数是日期样式,第二个参数是时间样式。第三个参数是Locale。这是一个简单的例子:

DateFormat formatter = DateFormat.getDateTimeInstance(
                           DateFormat.LONG, 
                           DateFormat.LONG, 
                           currentLocale);

下表显示了美国和法国语言环境的日期和时间格式样式:

samples 日期和时间格式

StyleU.S. LocaleFrench Locale
DEFAULT2009 年 6 月 30 日 7:03:47 AM30 2009 年 6 月 7 日 03:03:47
SHORT6/30/09 7:03 AM30/06/09 07:03
MEDIUM2009 年 6 月 30 日 7:03:47 AM30 2009 年 6 月 7 日 03:03:47
LONG2009 年 6 月 30 日,太平洋夏令时间 7:03:4730 juin 2009 07:03:47 PDT
FULL2009 年 6 月 30 日,星期二,太平洋时间上午 7:03:472009 年 6 月 30 日 3 月 30 日 PDT