用日期格式化成字符串或者用字符串格式成日期,我们可以自己定义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日要干大事情,敬请期