zoukankan      html  css  js  c++  java
  • Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类

      因为Jdk7及以前的日期时间类的不方便使用问题线程安全问题等问题,2005年,Stephen Colebourne创建了Joda-Time库,作为替代的日期和时间API。Stephen向JCP提交了一个规范,他本人作为规范的领导人,该规范就是JSR 310,在Java8中实现并发布。

    1.Java8日期、时间API包介绍

    • java.time包:这是新的Java日期/时间API的基础包,所有的主要基础类都是这个包的一部分,如:LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration等等。所有这些类都是不可变的和线程安全的,在绝大多数情况下,这些类能够有效地处理一些公共的需求。
    • java.time.chrono包:这个包为非ISO的日历系统定义了一些泛化的API,我们可以扩展AbstractChronology类来创建自己的日历系统。
    • java.time.format包:这个包包含能够格式化和解析日期时间对象的类,在绝大多数情况下,我们不应该直接使用它们,因为java.time包中相应的类已经提供了格式化和解析的方法。
    • java.time.temporal包:这个包包含一些时态对象,我们可以用其找出关于日期/时间对象的某个特定日期或时间,比如说,可以找到某月的第一天或最后一天。你可以非常容易地认出这些方法,因为它们都具有“withXXX”的格式。
    • java.time.zone包:这个包包含支持不同时区以及相关规则的类

    2.Java8日期时间API主要类有:

    LocalDate:表示不带时间的日期
    LocalTime:表示不带日期的时间
    LocalDateTime:日期和时间类
    ZoneId:时区
    ZonedDateTime:一个带时区的完整时间
    Instant:Unix 时间,它代表的是时间戳,比如 2018-01-14T02:20:13.592Z
    Clock:获取某个时区下当前的瞬时时间,日期或者时间
    Duration:表示一个绝对的精确跨度,使用毫秒为单位
    Period:这个类表示与 Duration 相同的概念,但是以人们比较熟悉的单位表示,比如年、月、周
    DateTimeFormatter:格式化输出
    TemporalAdjusters:获得指定日期时间等,如当月的第一天、今年的最后一天等

    ChronoUnit:时间单位枚举,用于加减操作

    ChronoField:字段枚举,用于设置字段值。

    主要类图:

     时间范围示意图:

    参考:https://www.iteye.com/news/26064

      https://segmentfault.com/a/1190000020179839

      《Java8实战》

      https://blog.csdn.net/wangsun300/article/details/103403490

  • 相关阅读:
    linux IO调度算法
    Programming Languages: Application and Interpretation
    zz 跟风小结一下孕期~
    UML和模式应用学习笔记-1(面向对象分析和设计)
    ASP.NET交互Rest服务接口(Jquery的Get与Post方式)
    Linq To Xml操作XML增删改查
    MSSQL数据库迁移到Oracle(二)
    MSSQL数据库迁移到Oracle
    学习EF之CodeFirst二(数据库对应映射)
    学习EF之CodeFirst一
  • 原文地址:https://www.cnblogs.com/xkzhangsanx/p/12052195.html
Copyright © 2011-2022 走看看