学科分类
目录

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对象,该方法在使用时,解析的时间或日期要符合指定的国家、地区格式,否则会抛出异常。

点击此处
隐藏目录