因为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

java 包结构 枚举类_Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类...相关推荐

  1. java中线性结构的例子_java数据结构--线性结构

    一.数据结构 数据结构由数据和结构两部分组成,就是将数据按照一定的结构组合起来,这样不同的组合方式有不同的效率,可根据需求选择不同的结构应用在相应在场景.数据结构大致 分为两类:线性结构(如数组,链表 ...

  2. java 7种枚举类型_Java中的枚举类型

    枚举类比较用 == 还是 equals,有啥区别? java 枚举值比较用 == 和 equals 方法没啥区别,两个随便用都是一样的效果.因为枚举 Enum 类的 equals 方法默认实现就是通过 ...

  3. java实现保存合同模板_java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板...

    最近公司要做个生成pdf电子账单凭证的功能,由于这个公司没有任何代码可借鉴,这个时候我就必须得自己搞明白具体的每一步应该怎么做,引什么jar包?用什么方式去实现?这篇博客中会给出从头到尾及其详细的代码 ...

  4. 云java编程_学堂云_Java程序设计概论-第1部分开始使用Java编程

    学堂云_Java程序设计概论-第1部分开始使用Java编程 更新时间:2020-07-30 11:33点击: If tourists had known the tsunami was occurri ...

  5. java多线程编程—高级主题_Java day20 高级编程【第一章】Java多线程编程

    [第一章]Java多线程编程 一.进程与线程 多个时间段会有多个程序依次执行,但是同一时间点只有一个进程执行 线程是在进程基础之上划分的更小的程序单元 ,线程是在进程基础上创建并且使用的,所以线程依赖 ...

  6. java 查找链表中间元素_java查找链表中间元素_如何通过Java单次查找链表的中间元素...

    java查找链表中间元素 您如何一次找到LinkedList的中间元素是一个编程问题,在电话采访中经常问Java和非Java程序员. 这个问题类似于检查回文或 计算阶乘 ,有时Interviewer还 ...

  7. java遍历文件和归类_java读取文件的两种方法:java.io和java.lang.ClassLoader

    java读取文件的两种方法:java.io和java.lang.ClassLoader 什么时候使用java.io,什么时候使用java.lang.ClassLoader呢? (注:要是之前读xml文 ...

  8. Java三层结构的概念_Java中的mvc和三层结构究竟是什么关系

    原标题:Java中的mvc和三层结构究竟是什么关系 一件事,要知其然往往很简单,要知其所以然通常不是那么容易,就如最近重新巩固spring的过程中,就觉得还有许多问题其实并不是十分明了. 屈指一算,手 ...

  9. 1229. 日期问题 Java题解 (枚举) 【第八届蓝桥杯省赛C++B组,JAVA B组】

    输入样例: 02/03/04 输出样例: 2002-03-04 2004-02-03 2004-03-02 解题思路: 可以顺着题意将三个数所有可能组成的情况枚举出来,并判断是否为合法的日期,将符合条 ...

最新文章

  1. 熟练掌握python是什么概念-Quant面试时说:熟练掌握Python,请三思,不然凉凉~
  2. jq获取同级元素_jq获取上级、同级、下级元素
  3. html绘图环境,HTML_HTML5 在canvas中绘制文本附效果图,一、绘制文本 在绘图环境中提 - phpStudy...
  4. struts2 mysql 乱码_struts2项目插入中文到mysql数据库乱码的解决方法
  5. 转载:【微信小程序】 wx:if 与 hidden(隐藏元素)区别
  6. 交互式 shell 玩转 Python
  7. P1563 [NOIP2016 提高组] 玩具谜题
  8. 基于JAVA小小银动漫网站计算机毕业设计源码+数据库+lw文档+系统+部署
  9. 自动(智能)驾驶 | 全网第一本激光雷达手册阅读指南(上)
  10. 光纤收发器和交换机之间有什么区别?
  11. 龙芯电脑使用Loongnix系统
  12. bootstrap-pagination数据全部加载到前端再进行处理_求助!vue单页项目如何改造路由使其能够进行分模块打包?...
  13. 【小白向】利用笔记本+网线让台式机上网
  14. 防止电脑辐射的最好方法
  15. 基于微博评论的文本情感分析与关键词提取的实战案例~
  16. js实现颜色从蓝色渐变到红色
  17. clion 2019去掉灰色参数提示(parameters hints)
  18. IT项目管理画图题【太原理工大学】
  19. JAVA实现图片质量压缩和加水印
  20. Qt报错unknown type name XXX

热门文章

  1. select设置text的值选中(兼容ios和Android)基于jquery
  2. PHP实现微信企业付款
  3. pgsql merge方法
  4. Linux文件系统结构
  5. jQuery实现锚点滑动定位
  6. spring-boot spring-security-oauth2
  7. 【cs229-Lecture8】顺序最小优化算法
  8. 昨天申请了这个blog,也就是半个多小时之前,eh,这是我的第几个blog了?
  9. linux移植win项目找不到pthread.h
  10. FFmpeg之编译ffplay(十四)