Java日期时间API系列12-----Jdk8中java.time包中的新的日期时间API类,日期格式化,常用日期格式大全
通过Java日期时间API系列10-----Jdk8中java.time包中的新的日期时间API类的DateTimeFormatter, 可以看出java8的DateTimeFormatter完美解决了SimpleDateFormat线程安全问题。下面是关于DateTimeFormatter的使用实例,包括常用日期格式大全,
以2020-01-01 00:00:00为例。
package com.xkzhangsan.time.test; import java.time.LocalDateTime; import java.util.Date; import com.xkzhangsan.time.LunarDate; import com.xkzhangsan.time.converter.DateTimeConverterUtil; import com.xkzhangsan.time.formatter.DateTimeFormatterUtil; public class NewYearFormatTest { public static void main(String[] args) { LocalDateTime localDateTime = LocalDateTime.of(2020, 1, 1, 0, 0, 0); Date date = DateTimeConverterUtil.toDate(localDateTime); LunarDate lunarDate = LunarDate.from(localDateTime); System.out.println("============================="); System.out.println("Hello " + lunarDate.format()); System.out.println("============================="); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_CN_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_EN_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYYMM_FMT)); System.out.println("============================="); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_DD_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_DD_CN_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_DD_EN_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_DD_POINT_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_DD_E_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYYMMDD_FMT)); System.out.println("============================="); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_DD_HH_MM_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYYMMDDHHMM_FMT)); System.out.println("============================="); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_DD_HH_MM_SS_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_DD_HH_MM_SS_CN_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_DD_HH_MM_SS_A_CN_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYYMMDDHHMMSS_FMT));//22 System.out.println("============================="); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYY_MM_DD_HH_MM_SS_SSS_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.YYYYMMDDHHMMSSSSS_FMT)); System.out.println("============================="); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.MM_DD_HH_MM_SS_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.MM_DD_HH_MM_SS_CN_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.MM_DD_HH_MM_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.MM_DD_HH_MM_CN_FMT)); System.out.println("============================="); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.MM_DD_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.MM_DD_CN_FMT)); System.out.println("============================="); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.HH_MM_SS_FMT)); System.out.println(DateTimeFormatterUtil.format(date, DateTimeFormatterUtil.HHMMSS_FMT)); System.out.println("============================="); } }
输出:
============================= Hello 己亥猪年 二〇一九年腊月初七 星期三 ============================= 2020 2020-01 2020年01月 2020/01 202001 ============================= 2020-01-01 2020年01月01日 2020/01/01 2020.01.01 2020-01-01 星期三 20200101 ============================= 2020-01-01 00:00 202001010000 ============================= 2020-01-01 00:00:00 2020年01月01日 00:00:00 2020年01月01日 00:00:00 上午 20200101000000 ============================= 2020-01-01 00:00:00.000 20200101000000000 ============================= 01-01 00:00:00 01月01日 00:00:00 01-01 00:00 01月01日 00:00 ============================= 01-01 01月01日 ============================= 00:00:00 000000 =============================
注意:上面代码中的 DateTimeFormatterUtil.YYYY_FMT中的YYYY_FMT是定义的常量,不是真正的转换格式模板,原代码中是小写的y:yyyy。YYYY会出现bug。
源码为:
private static final String YYYY = "yyyy"; /** * such as 2019 */ public static final DateTimeFormatter YYYY_FMT = DateTimeFormatter.ofPattern(YYYY).withZone(ZONE);
/** * 根据 formatter格式化 date * @param date * @param formatter * @return */ public static String format(Date date, DateTimeFormatter formatter){ Objects.requireNonNull(formatter, "formatter"); return DateTimeConverterUtil.toLocalDateTime(date).format(formatter); }
源码地址:https://github.com/xkzhangsan/xk-time
寻找撬动地球的支点(解决问题的方案),杠杆(Java等编程语言)已经有了。xkzhangsan