7.7.9 使用SimpleDateFormat格式化日期

7.7.9 使用SimpleDateFormat格式化日期

前面介绍的DateFormatparse()方法可以把字符串解析成Date对象,但实际上DateFormatparse方法不够灵活——它要求被解析的字符串必须满足特定的格式!
为了更好地格式化日期、解析日期字符串,Java提供了SimpleDateFormat类。
SimpleDateFormatDateFormat的子类,SimpleDateFormatDateFormat更简单,功能更强大。
SimpleDateFormat可以非常灵活地格式化Date,也可以用于解析各种格式的日期字符串。创建SimpleDateFormat对象时需要传入一个pattern字符串,这个pattern是一个日期模板字符串。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.text.*;
import java.util.*;

public class SimpleDateFormatTest {
public static void main(String[] args) throws ParseException {
Date d = new Date();
// 创建一个SimpleDateFormat对象
SimpleDateFormat sdf1 = new SimpleDateFormat("Gyyyy年中第D天");
// 将d格式化成日期,输出:公元2017年中第282天
String dateStr = sdf1.format(d);
System.out.println(dateStr);
// 一个非常特殊的日期字符串
String str = "14###3月##21";
SimpleDateFormat sdf2 = new SimpleDateFormat("y###MMM##d");
// 将日期字符串解析成日期,输出:Fri Mar 21 00:00:00 CST 2014
System.out.println(sdf2.parse(str));
}
}
1
2
公元2019年中第279天
Fri Mar 21 00:00:00 CST 2014

使用SimpleDateFormat可以将日期格式化成形如”公元2014年中第101天”这样的字符串,也可以把形如”14#三月##21”这样的字符串解析成日期,功能非常强大。
SimpleDateFormat把日期格式化成怎样的字符串,以及能把怎样的字符串解析成Date,完全取决于创建该对象时指定的pattern参数, pattern是一个使用日期字段占位符日期模板
如果读者想知道SimpleDateFormat支持哪些日期、时间占位符,可以查阅APl文档中SimpleDateFormat类的说明.