JDK8中新日期时间API
新日期时间API出现的背景如果我们可以跟别人说“我们在1502643933071见面别晚了”那么就再简单不过了。但是我们希望时间与昼夜和四季有关于是事情就变复杂了。JDK 1.0中包含了一个java.util.Date类但是它的大多数方法已经在JDK 1.1引入Calendar类之后被弃用了。而Calendar并不比Date好多少。它们面临的问题是可变性像日期和时间这样的类应该是不可变的。偏移性Date中的年份是从1900开始的而月份都从0开始。格式化格式化只对Date有用Calendar则不行。此外它们也不是线程安全的不能处理闰秒等。总结对日期和时间的操作一直是Java程序员最痛苦的地方之一新时间日期API第三次引入的API是成功的并且Java 8中引入的java.time API已经纠正了过去的缺陷将来很长一段时间内它都会为我们服务。Java 8吸收了Joda-Time的精华以一个新的开始为Java创建优秀的API。新的java.time中包含了所有关于本地日期LocalDate、本地时间LocalTime、本地日期时间LocalDateTime、时区ZonedDateTime和持续时间Duration的类。历史悠久的Date类新增了toInstant()方法用于把Date转换成新的表示形式。这些新增的本地化时间日期API大大简化了日期时间和本地化的管理。新时间日期APIjava.time–包含值对象的基础包java.time.chrono–提供对不同的日历系统的访问java.time.format–格式化和解析时间和日期java.time.temporal–包括底层框架和扩展特性java.time.zone–包含时区支持的类说明大多数开发者只会用到基础包和format包也可能会用到temporal包。因此尽管有68个新的公开类型大多数开发者大概将只会用到其中的三分之一。LocalDate、LocalTime、LocalDateTime类是其中较重要的几个类它们的实例是不可变的对象分别表示使用ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的本地日期或时间并不包含当前的时间信息也不包含与时区相关的信息。LocalDate代表IOS格式yyyy-MM-dd的日期,可以存储 生日、纪念日等日期。LocalTime表示一个时间而不是日期。LocalDateTime是用来表示日期和时间的这是一个最常用的类之一。注ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法也就是公历。9.3.2瞬时InstantInstant时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件时间戳。在处理时间和日期的时候我们通常会想到年,月,日,时,分,秒。然而这只是时间的一个模型是面向人类的。第二种通用模型是面向机器的或者说是连续的。在此模型中时间线中的一个点表示为一个很大的数这有利于计算机处理。在UNIX中这个数从1970年开始以秒为的单位同样的在Java中也是从1970年开始但以毫秒为单位。java.time包通过值类型Instant提供机器视图不提供处理人类意义上的时间单位。Instant表示时间线上的一点而不需要任何上下文信息例如时区。概念上讲它只是简单的表示自1970年1月1日0时0分0秒UTC开始的秒数。因为java.time包是基于纳秒计算的所以Instant的精度可以达到纳秒级。(1 ns 10-9s) 1秒 1000毫秒10^6微秒10^9纳秒
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2563465.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!