【java日期格式化】

1、SimpleDateFormat

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatTest {
    public static void main(String[] args) {
        /*
        yyyy 年份  注意和YYYY的区别,一般都用yyyy
        MM 月份
        dd 日
        HH 时(hh是十二小时制)
        mm 分
        ss 秒
        SSS 毫秒 1000毫秒代表1秒
         */
        Date dte = new Date(); //Sat Dec 19 17:54:57 CST 2020
        
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd HH:mm");//2020/12/19 05:54
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");//2020/12/19 05:54:57
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//2020-12-19 05:54:57

        String str = sdf3.format(dte);

    }
}

2、DateTimeFormatter

SimpleDateFormat是线程不安全的。
所以现在一般都推荐使用LocalDateTime它是线程安全的,并且性能更好,代码更简洁,提供了更丰富的计算方法

public class TimeTest {
    public static void main(String[] args) {
//        LocalDate:只含年月日的日期对象
//        LocalTime:只含时分秒的时间对象
//        LocalDateTime:同时含有年月日时分秒的日期对象

        //1、LocalDate
        LocalDate now = LocalDate.now();
        LocalDate date = LocalDate.parse("2021-05-23");//2021-05-23
        //LocalDate localDate2 = LocalDate.parse("2021/05/23"); //错误:java.time.format.DateTimeParseException
        System.out.println("当前时间 = " + now);
        System.out.println("date = " + date);
        //输出: 当前时间 = 2021-05-23

        //2、LocalTime
        LocalTime localTime = LocalTime.now();
        System.out.println("localTime = " + localTime);
        //输出: localTime = 23:55:56.258

        //3、LocalDateTime
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println("localDateTime = " + localDateTime);
        //输出: localDateTime = 2020-07-06T22:32:45.994

        //4、获取指定日期(参数依次 年、月、日)
        LocalDate localDate = LocalDate.of(2021, 5, 23);
        System.out.println("年月日 = " + localDate);
        //输出: 年月日 = 2021-05-23

        //5、获取指定时间(参数依次 时、分、秒、纳秒
        LocalTime localTimeOf = LocalTime.of(12, 24, 12, 4444);
        System.out.println("localTimeOf = " + localTimeOf);
        //输出: localTimeOf = 12:24:12.000004444

        //6、获取指定年月日,时分秒都有的日期(参数依次 年、月、日、时、分)
        LocalDateTime localDateTimeOf = LocalDateTime.of(2021, 7, 30, 12, 12);
        System.out.println("localDateTimeOf = " + localDateTimeOf);
        //输出: localDateTimeOf = 2021-07-30T12:12

        //7、日期+时间 组成 包含年月日,时分秒都有的日期
        LocalDateTime of = LocalDateTime.of(LocalDate.now(), LocalTime.now());
        System.out.println("of = " + of);
        //of = 2021-05-24T00:02:47.093
        
        //DateTimeFormatter
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate fomatterLocalData = LocalDate.parse("2021-05-23",dateTimeFormatter);
        System.out.println("fomatterLocalData2 = " + fomatterLocalData);//fomatterLocalData2 = 2021-05-23

        DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime fomatterLocalData2 = LocalDateTime.parse("2020-05-23 22:24:33",dateTimeFormatter2);
        System.out.println("fomatterLocalData2 = " + fomatterLocalData2);//fomatterLocalData2 = 2020-05-23T22:24:33

/** ---补充--- */
     LocalDate localDate = LocalDate.parse("2021/07/28", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
     LocalDate localDate1 = LocalDate.of(2021,10,10);
     System.out.println(localDate);
     System.out.println(localDate1);
     /** 比较时间 */
     boolean before = localDate.isBefore(localDate1);//localDate是否比localDate1早,早的话返回true
     /** 计算相差天数 */
     Period period = Period.between(localDate, localDate1);//period的getDays()获取的不是间隔天数,而是相隔多少月的多少天
     System.out.println("相差天数" +(localDate1.toEpochDay() - localDate.toEpochDay())); //74天
     System.out.println(localDate.until(localDate1, ChronoUnit.DAYS)); //localDate1 - localDate = 74 时间早的被减
    }
}

 参考文章:LocalDateTime格式化日期

原文地址:https://www.cnblogs.com/omgliyq/p/14160589.html