日期处理逻辑
通常Java中处理日期时往往会拿到一个字符串类型的日期,如20220202,2022-02-02,2022-02-02 09:09:01等,那么我们通常处理逻辑如下
String -> Date -> Calender
使用Calender的属性和方法计算日期,常用的Calender功能:
利用Calender设置日期
利用Calender计算时间差
利用Calender的getInstance()方法返回Date
可以参考我这一篇文章
需求
将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