8.5 日期的格式化(format 方法)

本文介绍Java中使用String.format方法进行日期格式化的详细过程,包括格式化模式、日期列表的使用及常见日期格式符号的含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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小时)
*/







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值