Java基础编程-JDK8新增日期时间API
2020-03-26 07:44
531 查看
本文全文参考 https://www.bilibili.com/video
日期时间API的迭代:
- 第一代:jdk 1.0 Date类
- 第二代:jdk 1.1 Calendar类,一定程度上替换Date类
- 第三代:jdk 1.8 提出了新的一套API
前两代存在的问题举例:
- 可变性:像日期和时间这样的类应该是不可变的。
- 偏移性:Date中的年份是从1900开始的,而月份都从0开始。
- 格式化:格式化只对Date用,Calendar则不行。
- 此外,它们也不是线程安全的;不能处理闰秒等。
java 8 中新的日期时间API涉及到的包
本地日期(LocalDate)、本地时间(LocalTime)、本地日期时间的使用(LocalDateTime)
4.1 说明:
- ① 分别表示使用 ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的本地日期或时间,并不包含当前的时间信息,也不包含与时区相关的信息。
- ② LocalDateTime相较于LocalDate、LocalTime,使用频率要高
- ③ 类似于Calendar
4.2 常用方法:
// now():获取当前的日期、时间、日期+时间 LocalDate localDate = LocalDate.now(); // 2020-03-24 LocalTime localTime = LocalTime.now(); // 10:25:45.991 LocalDateTime localDateTime = LocalDateTime.now(); // 2020-03-24T10:25:45.991 // of():设置指定的年、月、日、时、分、秒。没有偏移量 LocalDateTime of = LocalDateTime.of(2020, 3, 24, 10, 41, 59); System.out.println(of); // 2020-03-24T10:41:59 // getXxx() localDateTime.getDayOfWeek();//TUESDAY localDateTime.getDayOfMonth(); //24 localDateTime.getDayOfYear(); //84 localDateTime.getMinute(); // 46 localDateTime.getHour(); // 10 localDateTime.getMonth(); //MARCH localDateTime.getMonthValue(); // 3 localDateTime.getYear(); // 2020 // withXxx()-----不可变性 // 将月份天数、年份天数、月份、年份修改为指定的值并返回新的对象 LocalDate localDate1 = localDate.withDayOfMonth(23); // 设置月份天数 System.out.println(localDate); //2020-03-24 原来的值没有改变 System.out.println(localDate1); //2020-03-23 LocalDateTime localDateTime1 = localDateTime.withHour(11); // 设置小时数 // plusXxx()----不可变性 // 向当前对象添加几天、几周、几个月、几年、几小时 LocalDateTime localDateTime2 = localDateTime.plusMonths(3); // minusXxx()----不可变性 // 从当前对象减去几月、几周、几天、几年、几小时 LocalDateTime localDateTime3 = localDateTime.minusHours(12);
时间点:Instant
5.1 说明:
- ① 时间线上的一个瞬时点。 概念上讲,它只是简单的表示自1970年1月1日0时0分0秒(UTC开始的秒数。)
- 类似于 java.util.Date类
5.2 常用方法:
// now() Instant instant = Instant.now(); System.out.println(instant); // 2020-03-24T03:12:11.347Z // atOffset() OffsetDateTime offset = instant.atOffset(ZoneOffset.ofHours(8)); System.out.println(offset); // 2020-03-24T11:14:16.681+08:00 // toEpochMilli() long epochMilli = instant.toEpochMilli(); System.out.println(epochMilli); // 1585019727730 // ofEpochMilli() 根据毫秒数创建Instant对象 Instant instant1 = Instant.ofEpochMilli(1585019727730L); System.out.println(instant1);
日期时间格式化类:DateTimeFormatter
6.1 说明:
- ① 格式化或解析日期、时间
- ② 类似于SimpleDateFormat
6.2 常用方法:
- ① 实例化方式: 预定义的标准格式。如:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME
- 本地化相关的格式。如:ofLocalizedDateTime(FormatStyle.LONG)
- 自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
//预定义的标准格式。如:ISO_LOCAL_DATE_TIME;ISO_LOCAL_DATE;ISO_LOCAL_TIME DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; LocalDateTime localDateTime = LocalDateTime.now(); System.out.println(localDateTime); // // 2020-03-24T11:28:20.175 String format = formatter.format(localDateTime); System.out.println(format); // 2020-03-24T11:28:20.175 // 解析:字符串--》日期 TemporalAccessor parse = formatter.parse("2020-03-24T11:28:20.175"); System.out.println(parse); // {},ISO resolved to 2020-03-24T11:28:20.175 // 本地化相关的格式。如:ofLocalizedDateTime(FormatStyle.LONG) DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG); String format1 = formatter1.format(localDateTime); System.out.println(format1); // 2020年3月24日 上午11时33分31秒 // *重点:自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”) DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"); //格式化 String str4 = formatter3.format(LocalDateTime.now()); System.out.println(str4);//2019-02-18 03:52:09 //解析 TemporalAccessor accessor = formatter3.parse("2019-02-18 03:52:09"); System.out.println(accessor);
其他时间API
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 新增日期时间API-Java基础学习总结
- JAVA DAY28 Stream流 JDK1.8 新增的日期时间API
- Java8中新增的日期和时间API
- Java编程时间日期API实例解析
- 【Java基础】使用Java8新的日期和时间API
- Java 8 日期/时间(Date Time)API指南
- Java8 日期/时间(Date Time)API指南
- Java基础编程小练习——日期天数的计算
- Java 8新增的日期、时间格式器
- Java 8系列(一): 日期/时间- JSR310( Date and Time API)
- JDK8版本之日期和时间API详解
- Java中日期时间API小结
- Java新增的日期时间格式器
- Java 8新特性之新的时间日期API
- Java 8新特性 全新的日期时间API
- java8,你应该了解的新特性(新时间与日期API)
- Java 使用jdk8的新特性LocalDate和LocalDateTime 实现当前时间,日期加减,是否闰年,时间戳,时间线程每秒改变一次
- Java中的日期时间类总结更新至JDK8
- 使用Java 8 的日期和时间Api
- Java8新日期时间API的20个使用示例