LocalDateTime和Date日期格式化,字符串转时间,日期转化

加深对时间操作的理解,最怕的就是操作时间,还有日历类,到现在都不大会,感觉最难的就是涉及到时间转化的操作

public static void main(String[] args) throws ParseException {
        //yyyy-MM-dd'T'HH:mm:ss.SSSZ 对应格式在SimpleDateFormat类源码中有
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
        String format1 = dateFormat.format(new Date());
        System.out.println("format1 = " + format1);//format1 = 2023-01-13T15:20:25.233+0800

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        //时间转字符串(日期格式化)
        //将日期格式化所以参数是日期
        String format = sdf.format(new Date());
        System.out.println("format = " + format);//format = 2023/01/13 15:20:25

        //Date类型和LocalDateTime的日期格式化操作类似,都是格式化类调用format()方法格式日期
        //但字符串转时间不同,Date还是使用的格式化类,而LocalDateTime类自己提供了parse()转化方法
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss.SSS");
        String format2 = formatter.format(LocalDateTime.now());
        System.out.println("format2 = " + format2);//format2 = 2023/01/13 15:20:25.285

        //字符串转时间(可以会有异常)
        //将字符串转时间所以参数是字符串,2022-1-3居然会出异常,斜杠恐怖如斯
        Date parse = sdf.parse("2022/1/3 21:12:23");//Mon Jan 03 21:12:23 CST 2022
        System.out.println("parse = " + parse);//Fri Jan 13 14:31:19 CST 2023

        System.out.println(new Date());//Fri Jan 13 15:20:25 CST 2023

        System.out.println(LocalDate.now());//2023-01-13
        System.out.println(LocalTime.now());//14:49:37.444
        //LocalDateTime就是两者拼接的
        //private final LocalDate date;
        //private final LocalTime time;
        System.out.println(LocalDateTime.now());//2023-01-13T14:31:19.419

        int second = LocalDateTime.now().getSecond();
        System.out.println("second = " + second);

        //传入的字符串有严格的格式,鼠标悬停在parse()方法上,方法介绍params里有正确的格式
        LocalDateTime now = LocalDateTime.parse("2023-01-13T14:31:19.419");
        System.out.println("now = " + now);//now = 2023-01-13T14:31:19.419

    }