JAVA-jdk8新特性-时间的处理

当你开始使用Java操作日期和时间的时候,会有一些棘手。你也许会通过System.currentTimeMillis()

来返回1970年1月1日到今天的毫秒数。或者使用Date类来操作日期;当遇到加减月份、天数的时候

你又需要用到Calendar类;当需要格式化日期的时候需要使用java.text.DateFormat类。


现有API存在的问题

线程安全: Date和Calendar不是线程安全的,你需要编写额外的代码处理线程安全问题

API设计和易用性: 由于Date和Calendar的设计不当你无法完成日常的日期操作

ZonedDate和Time: 你必须编写额外的逻辑处理时区和那些旧的逻辑


而java8.0

加入了新的日期API,具体在下:

ZoneId: 时区ID,用来确定Instant和LocalDateTime互相转换的规则

Instant: 用来表示时间线上的一个点

LocalDate: 表示没有时区的日期, LocalDate是不可变并且线程安全的

LocalTime: 表示没有时区的时间, LocalTime是不可变并且线程安全的

LocalDateTime: 表示没有时区的日期时间, LocalDateTime是不可变并且线程安全的

Clock: 用于访问当前时刻、日期、时间,用到时区

Duration: 用秒和纳秒表示时间的数量

最常用的就是LocalDate、LocalTime、LocalDateTime了,从它们的名字就可以看出是操作日期


首先来测试一下LocalDate类的常用方法:


测试结果如下:




现在再来测试一下LocalDate类的常用方法:


测试如下:


LocalDateTime类:

测试如下:


来说说日期和时间的加减吧:

三个类:LocalDate、LocalTime、LocalDateTime全部拥有minus()和plus()方法只是参数不好直接调用并传递进去。

更多时候我们是使用以下可以直接手动传递形参进去的方法:

LocalDate:minusDays()、plusDays()。minusMonths()、plussMonths()。用于增加和减少日月信息

LocalTime:minusMinutes()、plusMinutes()。minusHours()、plussHours()。

LocalDateTime:以上均有


LocalDateTime输出的日期时间格式可以自定义:





of和parse方法功能强大,但如果是想将日期以字符串的格式输出,还有用到以下的格式化方法:



另外还提供了与Date类的转化机制类,请参考:https://zhuanlan.zhihu.com/p/28133858?utm_source=qq&utm_medium=social 


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容