8.5 日期的格式化
通过日期格式化,我们可以按着喜欢的格式输出时间
8.5.1 format 方法
1.格式化模式
Java早期使用Java.text包中的DateFormat方法的子类SimpleDateFormat来实现日期的格式
JDK1.5版本提供了更方便的Formatter类。
//Formatter类的format方法:
format(格式化模式,日期列表)
String string = String.format("%ty年%tm月%td日", new Date(),new Date(),new Date());
2.日期列表:
format方法中的“日期列表”可以是利用逗号分隔的Calendar对象或者Date对象,要保证format方法“格式化模式”中的格式符的个数与“日期列表”中列出的日期个数相同。
3.格式化同一日期:
希望用几个格式符号格式“日期列表”中同一个日期,可以在格式化模式
中使用“<”,比如:
String string2=String.format("%ty年%<tm月%<td日", new Date());//%tm和%td都格式化newDate()。s=XX年XX月XX日
%tY 将日期中的“年”格式化为4位形式,例如:1999,2000
%ty 将日期中的“年”格式化为2位形式(带前导零),例如:99,00
%tm 将日期中的“月”格式化为2位形式(带前导零),即:01~13,其中“01”是一年的第一个月(“13”是支持阴历所需的一个特殊值)
%tp 将日期中的“日”格式化为当前环境下上午、下午的表示格式,例如:(US环境)“am”、“pm”。
%td 将日期中的“日”格式化为当前月中的天(带前导零),即01~31,“01”是一个月中的第一天
%tj 将日期中的“日”格式化为当年的天数(带前导零),即001~365,“001”是一个年中的第一天
%tB 将日期中的“月”格式化为当前环境下的月份全称,例如:(US环境)“January”、“February”。
%tb将日期中的“月”格式化为当前环境下的月份简称,例如:(US环境)“Jan”、“Feb”。
%tA 将日期中的“日”格式化为当前环境下的星期几的全称,例如:“Sunday”、“Monday”。
%ta 将日期中的“日”格式化为当前环境下的星期几的简称,例如:“Sun”、“Mon”。
%tH 将日期中的“时”格式化为2位数形式(带前导零,24小时制),即00~23(00对应午夜)
%tI 将日期中的“时”格式化为2位数形式(带前导零,12小时制),即01~12(01对应上午或者下午一点钟)
%tM将日期中的“分”格式化为2位形式(带前导零),即:00~60,“00”是支持闰秒所需的一个特殊值
%tS将日期中的“秒”格式化为2位形式(带前导零),即:00~60
%tL将日期中的“毫秒”格式化为3位形式(带前导零),即:000~999
%tN将日期中的毫秒中的“微秒”格式化为9位形式(带前导零),即:000000000~999999999
%tz将日期与GMT(格林威治时间)的偏移量格式化为4位形式,例如:+0800,-0600
%tZ将日期所在时区的名称格式化为标准缩写,例如:CST
另外,还有一些代表几个日期格式符组合在一起的日期格式符
%tR=%tH:%tM
%tT=%tH:%tM:%S
%tr=%tI:%tM:%tS%Tp(上午或者下午标记的%Tp位置可能与地区有关)
%tD=%tm%td%ty
%tF=“%tY-%tm-%td”
%tc=“%ta%tb%td%tT%tZ%tY”(例子:星期四 二月 10 17:50:07 CST 2011)
/*
* 格式化日期
*/
public class Example8_17 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Date date=new Date();
System.out.println(date);
String pString="%tY-%<tm-%<td(%<tA)%<tT";
String string=String.format(pString, new Date());
System.out.println(string);
Calendar calendar=Calendar.getInstance();
calendar.set(2022,11,31,05,15,59);
string=String.format("%ty年%<tm月%<td日(%<tT,所在时区%<tZ与GMT相差:%<tZ小时)", calendar);
System.out.println(string);
}
}
/*
Fri Dec 01 18:58:21 CST 2017
2017-12-01(星期五)18:58:21
22年12月31日(05:15:59,所在时区CST与GMT相差:CST小时)
*/