SimpleDateFormat格式化与解析日期

日期处理逻辑

通常Java中处理日期时往往会拿到一个字符串类型的日期,如20220202,2022-02-02,2022-02-02 09:09:01等,那么我们通常处理逻辑如下

String -> Date -> Calender
使用Calender的属性和方法计算日期,常用的Calender功能:
利用Calender设置日期
利用Calender计算时间差
利用Calender的getInstance()方法返回Date

可以参考我这一篇文章

Calender日期计算

需求

将yyyyMMdd字符串转成下面日期格式,yyyy-MM-dd以及yyyy-MM-dd HH:mm:ss等日期字符串格式也类似

yyyy-MM-dd HH:mm:ss

思路

先利用SimpleDateFormat的parse方法将字符串转成日期

# 这里要解析的格式可以自定义,如yyyy-MM-dd,yyyy-MM-dd HH:mm:ss等
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); 
Date parse = sdf.parse("20220601");
System.out.println(parse);

结果

Wed Jun 01 00:00:00 CST 2022

再用SimpleDateFormat的format方法将日期格式化

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format1 = sdf1.format(parse);
System.out.println(format1);

结果

Wed Jun 01 00:00:00 CST 2022
2022-06-01 00:00:00

补充:输出毫秒值

String nowtime = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
System.out.println(nowtime);

结果

20211227155805103

常见的日期字符串解析

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
Date date1 = sdf1.parse("20220703");
System.out.println(date1);

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
Date date2 = sdf2.parse("2022-07-03");
System.out.println(date2);

SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM");
Date date3 = sdf3.parse("2022-07");
System.out.println(date3);

SimpleDateFormat sdf4 = new SimpleDateFormat("yyyyMM");
Date date4 = sdf4.parse("202207");
System.out.println(date4);

SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy");
Date date5 = sdf5.parse("2022");
System.out.println(date5);

SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd HHmmss");
Date date6 = sdf6.parse("20220703 090910");
System.out.println(date6);

SimpleDateFormat sdf7 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date7 = sdf7.parse("2022-07-03 09:09:10");
System.out.println(date7);

结果

Sun Jul 03 00:00:00 CST 2022
Sun Jul 03 00:00:00 CST 2022
Fri Jul 01 00:00:00 CST 2022
Fri Jul 01 00:00:00 CST 2022
Sat Jan 01 00:00:00 CST 2022
Sun Jul 03 09:09:10 CST 2022
Sun Jul 03 09:09:10 CST 2022
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BirdMan98

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值