DateFormat类
在实际生活中,每个国家地区的日期/时间的表示方式都大不相同,有时需要让日期/时间按照指定国家的文化习惯进行显示,为了完成这种功能,JDK提供了一个DateFormat类,DateFormat类是一个抽象类,它继承自Format,可以将一个日期/时间对象格式化为表示某个特定地区的日期/时间字符串,也可以将某个地区的日期/时间的字符串解析为相应的Date对象。接下来,介绍DateFormat对象的几种创建方式和DateFormat类中的一些常量和方法,具体如下:
1、DateFormat中的常量
DateFormat类定义了一些用于描述日期/时间显示模式的整型常量,其中包括SHORT 、DEFAULT、MEDIUM、LONG、FULL,在实例化DateFormat对象时,可以使用这些常量控制日期/时间的显示长度。这些常量所表示的日期/时间的确切格式取决于本地环境,例如,在中文(中国)本地环境下,日期/时间“2013年12月11日下午4时41分20秒”,各种模式的表现形式如下:
● SHORT模式完全是数字的,这个日期/时间显示的格式为“13-12-11 下午4:41”;
● MEDIUM模式比SHORT模式长些,这个日期/时间显示的格式为“2013-12-11 16:41:20”
● LONG模式比MEDIUM模式更长一些,这个日期/时间显示的格式为“2013年12月11日 下午04时41分20秒”
● FULL模式指定日期/时间的完整格式,这个日期/时间显示的格式为“2013年12月11日 星期三 下午04时41分20秒 CST”
● DEFAULT表示默认的显示模式,它的值为MEDIUM。
2、获取DateFormat类的实例对象
由于DateFormat是一个抽象类,不能使用构造方法创建实例对象,因此,JDK提供了一些用于获取DateFormat实例对象的静态方法,在这些静态方法中可以传递一些参数,也可以不传递参数,接下来列举一些传递参数的静态方法,具体如下:
● getDateInstance(int style, Locale aLocale):以指定的日期显示模式和本地信息来获取DateFormat对象,该对象不处理时间值部分。
● getTimeInstance(int style, Locale aLocale):以指定的时间显示模式和本地信息来获取DateFormat对象,该对象不处理日期值部分。
● getDateTimeInstance(int dateStyle, int timeStyle, Locale aLocale):以单独指定的日期显示模式、时间显示模式和本地信息来获得DateFormat实例对象。
3、日期/时间的格式化和解析
为了方便对日期/时间的字符串进行格式化以及解析为Date对象,DateFormat类提供了两个方法,具体如下:
● format()方法:
该方法可以将日期/时间对象格式化为符合本地习惯的字符串,示例代码如下:
String dateTime=DateFormat.getDateTimeInstance().format(new Date());
● parse()方法:
例10-8 该方法可以将某个本地习惯的日期/时间字符串解析为Date对象,示例代码如下:
DateFormat df = DateFormat.getDateInstance(DateFormat.Long,Locale.US);
Date date = df.parse("September 15,2013");
为了让读者更好的学习DateFormat对象的format()方法和parse()方法,接下来通过一个具体的案例来演示这两个方法的使用,如例1所示。
例1 DateFormatExam.java
1 package cn.itcast.chapter10;
2 import java.text.*;
3 import java.util.*;
4 public class DateFormatExam {
5 public static void main(String[] args) throws ParseException {
6 // 获取本地默认的DateFormat对象
7 DateFormat df=DateFormat.getDateTimeInstance();
8 // 获取本地默认的DateFormat对象
9 DateFormat df1=DateFormat.getDateInstance();
10 Date date=new Date();
11 System.out.println("使用默认的本地信息对日期/时间进行格式化:");
12 System.out.println(df.format(date));
13 System.out.println("使用默认的本地信息解析日期/时间字符串:");
14 System.out.println(df1.parse("2013-12-11"));
15 }
16 }
运行DateFormatExam.java程序,此时,控制台窗口中显示的结果如图1所示。
图1 控制台窗口
从图1可以看出,使用DateFormat对象的format()方法,将日期/时间按照本地的日期和时间进行了显示,使用DateFormat对象的parse()方法,将字符串“2015-3-16”解析为一个Date对象。
需要注意是,format()方法和parse()方法的作用是完全相反的,format()方法可以将时间日期转化为相应地区和国家的样式显示,parse()方法是可以将相应地区的时间日期转化成Date对象,该方法在使用时,解析的时间或日期要符合指定的国家、地区格式,否则会抛出异常。