当前位置: 代码迷 >> 综合 >> 4.JDK1.8新增 LocalDate,LocalTime,LocalDateTime
  详细解决方案

4.JDK1.8新增 LocalDate,LocalTime,LocalDateTime

热度:27   发布时间:2023-12-06 18:00:21.0

JDK1.0使用java.util.Date类 --> 第一批日期时间API

JDK1.1引入Calendar类 --> 第二批日期时间类API

缺陷:

可变性:像日期和时间这样的类应该是不可变的

偏移性:Date中的年份是从1900开始的,而月份都从0开始

格式化:格式化只对Date有用,Calendar则不行

JDK1.8新增日期时间API --> 第三批日期时间API

public static void main(String[] args) {// 方法1:now() -->获取当前的日期,时间,日期+时间LocalDate localDate = LocalDate.now();System.out.println(localDate);LocalTime localTime = LocalTime.now();System.out.println(localTime);LocalDateTime localDateTime = LocalDateTime.now();System.out.println(localDateTime);// 方法2:of() --> 设置指定的日期,时间,日期+时间LocalDate of = LocalDate.of(2015, 3, 15);System.out.println(of);LocalTime of1 = LocalTime.of(12, 35, 56);System.out.println(of1);LocalDateTime of2 = LocalDateTime.of(2013, 3, 15, 8, 00, 23);System.out.println(of2);// LocalDate,LocalTime 用的不如LocalDateTime多// 下面讲解用LocalDateTime://  一系列常用的get***System.out.println(localDateTime.getYear());            //     2022System.out.println(localDateTime.getMonth());           //MARCHSystem.out.println(localDateTime.getMonthValue());      //3System.out.println(localDateTime.getDayOfMonth());      //19System.out.println(localDateTime.getDayOfWeek());       //SATURDAYSystem.out.println(localDateTime.getHour());            //11System.out.println(localDateTime.getMinute());          //37System.out.println(localDateTime.getSecond());          //9System.out.println("==============================================");// 不是set方法 叫with// 体会: 不可变性LocalDateTime localDateTime1 = localDateTime.withMonth(8);System.out.println(localDateTime);System.out.println(localDateTime1);// 提供了加减的操作LocalDateTime localDateTime2 = localDateTime.plusMonths(4);System.out.println(localDateTime);System.out.println(localDateTime2);//减LocalDateTime localDateTime3 = localDateTime.minusMonths(2);System.out.println(localDateTime3);}

DateTimeFormat

public static void main(String[] args) {// 格式化类 :DateTimeFormatter// 方式一:预定义的标准格式: ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIMEDateTimeFormatter df1 = DateTimeFormatter.ISO_LOCAL_DATE_TIME;// df1就可以帮我们完成LocalDateTime 和String之间的相互转换:// LocalDateTime --> String:LocalDateTime now = LocalDateTime.now();String str = df1.format(now);System.out.println(str);    //2022-03-19T11:57:07.350383// String --> LocalDateTimeTemporalAccessor parse = df1.parse("2022-03-19T11:57:07.350383");// 用一个接口实现类System.out.println(parse); // 这里相当于调用了它的toString() 方法 打印出来是这样的:{},ISO resolved to 2022-03-19T11:57:07.350383// 方式二:本地化相关的格式: 如 ofLocalizedDateTime()// 参数: FormatStyle.LONG / FormatStyle.MEDIUM  / FormatStyle.SHORT//这个代码在JDK11 可以运行// DateTimeFormatter df2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG).withZone(ZoneId.systemDefault());// 这个代码在jdk1.8可以运行DateTimeFormatter df2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);//FormatStyle.LONG 打印出来 2022年3月19日 下午12时15分02秒// LocalDateTime --> String:LocalDateTime now1 = LocalDateTime.now();String str2 = df2.format(now1);System.out.println(str2);DateTimeFormatter df3 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);//FormatStyle.MEDIUM 打印出来 2022-3-19 12:17:08// LocalDateTime --> String:String str3 = df3.format(now1);System.out.println(str3);DateTimeFormatter df4 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);//FormatStyle.SHORT 打印出来 22-3-19 下午12:18// LocalDateTime --> String:String str4 = df4.format(now1);System.out.println(str4);// String --> LocalDateTimeTemporalAccessor parse1 = df2.parse("2022年3月19日 下午12时15分02秒");System.out.println(parse1);// 方式三 自定义的格式 如ofPattern("yyyy-MM-dd hh:mm:ss") -->重点 ,以后常用DateTimeFormatter df5= DateTimeFormatter.ofPattern("yyyy/MM/dd hh:mm:ss");// LocalDateTime --> String:LocalDateTime now2 = LocalDateTime.now();String format = df5.format(now2);System.out.println(format); // 2022/03/19 12:25:07// String --> LocalDateTimeTemporalAccessor parse2 = df5.parse("2022/03/19 12:25:07");System.out.println(parse2);//调用了它的toString()}
  相关解决方案