DateFormat类概述
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat类)允许进行格式化(也就是日期Date -> 文本String)、解析(文本String-> 日期Date)和标准化。
我们通过这个类可以帮我们完成日期和文本之间的转换。
继续阅读API,DateFormat 可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。
日期格式化
要格式化一个当前语言环境下的日期也就是日期 -> 文本),要通过下面的方法来完成。DateFormat是抽象类,我们需要使用其子类SimpleDateFormat来创建对象。
//创建日期格式化对象,在获取格式化对象时可以指定风格
DateFormat df= new SimpleDateFormat("yyyy-MM-dd");//对日期进行格式化
Date date = new Date(1607616000000L);
String str_time = df.format(date);
System.out.println(str_time);//2020年12月11日
<1> DateFormat类的作用:即可以将一个Date对象转换为一个符合指定格式的字符串,也可以将一个符合指定格式的字符串转为一个Date对象。
指定格式的具体规则我们可参照SimpleDateFormat类的说明,这里做简单介绍,规则是在一个字符串中,会将以下字母替换成对应时间组成部分,剩余内容原样输出:
字母 日期或时间元素 表示 示例
G Era 标志符 Text AD
y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800
DateFormat类常用方法
<1> format方法,用来将Date对象转换成String
<2> parse方法,用来将String转换成Date(转换时,该String要符合指定格式,否则不能转换)。
public class DateFormatDemo {
public static void main(String[] args) {
// "EEE MMM dd HH:mm:ss zzz yyyy";
// 星期 月 日期 小时 分钟 秒 时区 年份
// DateFormat是一个抽象类,所以我们一般使用它的子类SimpleDateFormat
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss D E");
// 格式化 Date---->String
// String format(Date date) 将一个 Date 格式化为日期/时间字符串。
Date now = new Date();
String s1 = df.format(now);
System.out.println(s1);
// 解析 String--->Date
// Date parse(String source) 从给定字符串的开始解析文本,以生成一个日期。
try {
DateFormat df2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s2="1990-09-10 10:10:10";
Date d=df2.parse(s2);
System.out.println(d);
} catch (ParseException e) { //你给的规则和你的字符串不匹配时抛出解析异常
e.printStackTrace();
}
}
}