用日期格式化成字符串或者用字符串格式成日期,我们可以自己定义pattern,我们在分析SimpleDateFormat源代码中,知道该对象是线程不安全的,所有推荐使用DateTimeFormatter
声明一个日期:
LocalDateTime now = LocalDateTime.now();
log.debug("当前日期:{}",now);
// - 当前日期:2021-06-20T17:54:47.210
日期格式化成日期字符串:
String format1 = now.format(DateTimeFormatter.ISO_DATE);
log.debug("格式化日期字符串1:{}",format1);
String format2 = now.format(DateTimeFormatter.ISO_DATE_TIME);
log.debug("格式化日期字符串2:{}",format2);
// - 格式化日期字符串1:2021-06-20
// - 格式化日期字符串2:2021-06-20T17:54:47.21
字符串解析成日期:
//解析字符串
LocalDate parse1 = LocalDate.parse(format1);
log.debug("日期字符串解析日期1:{}",parse1);
LocalDateTime parse2 = LocalDateTime.parse(format2);
log.debug("日期字符串解析日期2:{}",parse2);
// - 日期字符串解析日期1:2021-06-20
// - 日期字符串解析日期2:2021-06-20T17:54:47.210
根据所在时区指定解析格式:
//根据所在时区指定解析格式
String s1 = now.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL));
String s2 = now.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));
String s3 = now.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM));
String s4 = now.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT));
log.debug("解析格式Full:{}",s1);
log.debug("解析格式LONG:{}",s2);
log.debug("解析格式MEDIUM:{}",s3);
log.debug("解析格式SHORT:{}",s4);
// - 解析格式Full:2021年6月20日 星期日
// - 解析格式LONG:2021年6月20日
// - 解析格式MEDIUM:2021-6-20
// - 解析格式SHORT:21-6-20
自定义解析模式字符串,保证年(yyyy),月(MM),日(dd),小时(HH),分(mm),秒(ss),然后任意组合替换pattern
//自定义解析字符串
String s5 = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//终于统一了格式化字符串
//String s51 = now.format(DateTimeFormatter.ofPattern("YYYY-MM-DD HH24:MI:SS"));
String s6 = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String s7 = now.format(DateTimeFormatter.ofPattern("今年MM月dd日要干大事情,敬请期待!!"));
log.debug("s5:自定义解析格式yyyy-MM-dd HH:mm:ss:{}",s5);
//log.debug("自定义解析格式s51:{}",s51);
log.debug("s6:自定义解析格式yyyy-MM-dd:{}",s6);
log.debug("s7:自定义解析格式[今年MM月dd日要干大事情,敬请期待!!]:{}",s7);
// - s5:自定义解析格式yyyy-MM-dd HH:mm:ss:2021-06-20 17:54:47
// - s6:自定义解析格式yyyy-MM-dd:2021-06-20
// - s7:自定义解析格式[今年MM月dd日要干大事情,敬请期待!!]:今年06月20日要干大事情,敬请期