SimpleDateFormat类
在使用DateFormat对象的parse()方法将字符串解析为日期时,需要输入固定格式的字符串,这显然不够灵活。为了能够更好地格式化日期、解析字符串,Java中提供了一个SimpleDateFormat类。
SimpleDateFormat类是DateFormat类的子类,它可以使用new关键字创建实例对象。在创建实例对象时,它的构造方法需要接收一个表示日期格式模板的字符串参数。
接下来通过一个案例演示,如何使用SimpleDateFormat类将日期对象以特定的格式转为字符串形式,如文件1所示。
文件1 Example26.java
1 import java.text.*;
2 import java.util.*;
3 public class Example26 {
4 public static void main(String[] args) throws Exception {
5 // 创建一个SimpleDateFormat对象
6 SimpleDateFormat sdf = new SimpleDateFormat(
7 "Gyyyy年MM月dd日:今天是yyyy年的第D天,E");
8 // 按SimpleDateFormat对象的日期模板格式化Date对象
9 System.out.println(sdf.format(new Date()));
10 }
11 }
运行结果如图1所示。
图1 运行结果
在文件1中,在创建SimpleDateFormat对象时传入日期格式模板“Gyyyy年MM月dd日:今天是yyyy年的第D天,E”,在调用SimpleDateFormat的format()方法时,会将Date对象格式化成如模板格式的时间形式,即“公元2018年01月27日:今天是2018年的第27天,星期六”。
上面通过SimpleDateFormat类将一个Date时间对象转换为指定格式字符串形式,接下来通过一个案例来演示,如何使用SimpleDateFormat类将一个指定日期格式的字符串解析为Date对象,如文件2所示。
文件2 Example27.java
1 import java.text.*;
2 public class Example27 {
3 public static void main(String[] args) throws ParseException{
4 // 创建一个SimpleDateFormat对象,并指定日期格式
5 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
6 // 定义一个日期格式的字符串
7 String str = "2018/01/27";
8 // 将字符串解析成Date对象
9 System.out.println(sdf.parse(str));
10 }
11 }
运行结果如图2所示。
图2 运行结果
在文件2中,首先在创建SimpleDateFormat对象时传入日期格式模板“yyyy/MM/dd”,然后定义了一个指定日期格式的字符串“2018/01/27”,最后调用SimpleDateFormat的parse()方法将符合日期模板格式的字符串解析成Date对象。
SimpleDateFormat的功能非常强大,在创建SimpleDateFormat对象时,只要传入合适的格式字符串参数,就能解析各种形式的日期字符串或者将Date日期格式化成任何形式的字符串。其中,格式字符串参数是一个使用日期/时间字段占位符的日期模板。