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

原文地址:https://www.cnblogs.com/xkzhangsanx/p/12122390.html