DateFormat类
使用Date类时,在程序中打印Date对象所输出的当前时间都是以默认的英文格式输出的,如果要将Date对象表示的日期以指定的格式输出,例如输出中文格式的时间,就需要用到DateFormat类。
DateFormat类专门用于将日期格式化为字符串或者将用特定格式显示的日期字符串转换成一个Date对象。DateFormat是一个抽象类,不能被直接实例化,但它提供了一系列的静态方法来获取DateFormat类的实例对象,并能调用其他相应的方法进行操作。
DateFormat类中提供的常用方法,如表1所示。
表1 DateFormat的常用方法
方法声明 | 功能描述 |
---|---|
static DateFormat getDateInstance() | 用于创建默认语言环境和格式化风格的日期格式器 |
static DateFormat getDateInstance(int style) | 用于创建默认语言环境和指定格式化风格的日期格式器 |
static DateFormat getDateTimeInstance() | 用于创建默认语言环境和格式化风格的日期/时间格式器 |
static DateFormat getDateTimeInstance( int dateStyle,int timeStyle) | 用于创建默认语言环境和指定格式化风格的日期/时间格式器 |
String format(Date date) | 将一个 Date 格式化为日期/时间字符串。 |
Date parse(String source) | 将给定字符串解析成一个日期 |
表1中,列出了DateFormat类的四个静态方法,这四个静态方法能用于获得DateFormat类的实例对象,每种方法返回的对象都具有不同的作用,它们可以分别对日期或者时间部分进行格式化。
在DateFormat类中还定义了许多常量,其中有四个常量值是用于作为参数传递给方法的,包括FULL、LONG、MEDIUM和SHORT。FULL常量用于表示完整格式,LONG常量用于表示长格式,MEDIUM常量用于表示普通格式,SHORT常量用于表示短格式。
接下来通过一个案例针对DateFormat类的使用进行演示,如文件1所示。
文件1 Example24.java
1 import java.text.*;
2 import java.util.*;
3 public class Example24 {
4 public static void main(String[] args) {
5 // 创建Date对象
6 Date date = new Date();
7 // Full格式的日期格式器对象
8 DateFormat fullFormat =
9 DateFormat.getDateInstance(DateFormat.FULL);
10 // Long格式的日期格式器对象
11 DateFormat longFormat =
12 DateFormat.getDateInstance(DateFormat.LONG);
13 // MEDIUM格式的日期/时间 格式器对象
14 DateFormat mediumFormat = DateFormat.getDateTimeInstance(
15 DateFormat.MEDIUM, DateFormat.MEDIUM);
16 // SHORT格式的日期/时间格式器对象
17 DateFormat shortFormat = DateFormat.getDateTimeInstance(
18 DateFormat.SHORT, DateFormat.SHORT);
19 // 下面打印格式化后的日期或者日期/时间
20 System.out.println("当前日期的完整格式为:"
21 + fullFormat.format(date));
22 System.out.println("当前日期的长格式为:"
23 + longFormat.format(date));
24 System.out.println("当前日期的普通格式为:"
25 + mediumFormat.format(date));
26 System.out.println("当前日期的短格式为:"
27 + shortFormat.format(date));
28 }
29 }
运行结果如图1所示。
图1 运行结果
文件1中,演示了四种格式下时间和日期格式化输出的效果,其中调用getDateInstance()方法获得的实例对象用于对日期部分进行格式化,getDateTimeInstance()方法获得的实例对象可以对日期和时间部分进行格式化。
DateFormat中还提供了一个parse(String source)方法,能够将一个字符串解析成Date对象,但是它要求字符串必须符合日期/时间的格式要求,否则会抛出异常。
接下来通过一个案例来演示parse()方法的使用,如文件2所示。
文件2 Example25.java
1 import java.text.*;
2 public class Example25 {
3 public static void main(String[] args) throws ParseException {
4 // 创建DateFormat对象
5 DateFormat dt1 = DateFormat.getDateInstance();
6 // 创建Long格式的DateFormat对象
7 DateFormat dt2 = DateFormat.getDateInstance(DateFormat.LONG);
8 // 定义两个日期格式的字符串
9 String str1 = "2018-01-27";
10 String str2 = "2018年01月27日";
11 // 输出对应格式的字符串解析成Date对象后的结果
12 System.out.println(dt1.parse(str1));
13 System.out.println(dt2.parse(str2));
14 }
15 }
运行结果如2所示。
图2 运行结果
文件2中,首先创建了一个普通的DateFormat对象,以及LONG格式的DateFormat对象,然后定义了两种日期格式的字符串,最后在输出语句中调用parse()方法将对应格式的字符串解析成Date对象。