java8中LocalDate、LocalTime、LocalDateTime介绍

很久以前java8中就推出了新的Time API,旨在解决旧版Date和Calendar的缺陷。讲道理真的挺好用的,不过由其他工具对新版time的兼容并不够完善,导致现在使用还不够普及。大家都还在用老的Date类,苦?的封装时间工具函数,感?真的没意思。

(一)旧版Time/Date类的缺陷

(1)线程不安全:

首先旧版本的时间类是线程不安全的,在多线程操作同一个时间类实例时,会抛出异常。而新版本的时间工具全部都是线程安全的。

(2)设计混乱、可读性不好:

旧版本的java.util.Date,虽然名字叫Date,?是其实既包含日期也包含时间。同时在mysql中也有个java.sql.Date,这两个Date名字一摸一样,但是mysql的Date是不包含时间的。另外对日期格式化的工具却在java.text包中。包比较混乱,对我们程序盐多有不便。

(3)没有良好的时区方法支持:

新版本的时间类提供了非常良好的时区API,旧版本需要使用java.util.Calendar and java.util.TimeZone 等类。

(二)新版日期时间API的使用

1.LocalDate的使用:

(1)轻松的实现日期和周间的转换

// 获取2016年6月12号是周几
LocalDate.parse("2016-06-12").getDayOfWeek();

(2)轻松的判断是不是闰年

boolean leapYear = LocalDate.now().isLeapYear();

(3)轻松的获取每天的起始时间和结束时间

LocalDateTime beginningOfDay = LocalDate.parse("2016-06-12").atStartOfDay();

2.LocalTime的使用:

(1)轻松的获取时间最大值

// 23:59:59.99
LocalTime maxTime = LocalTime.MAX

(2)轻松的进行时间增减

(1)轻松的获取巴黎的时区

ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId);

3.LocalDateTime的使用:

LocalDateTime包含日期和时间,是之前两者的合集,这里就不详细介绍了。

(三)新版时区API的使用

(1)轻松的获取巴黎的时区

ZoneId zoneId = ZoneId.of("Europe/Paris");

(2)将本地时区时间转为其他时区时间:

ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId);

(四)获取日期时间间隔

// 日期间隔天数
int five = Period.between(finalDate, initialDate).getDays();
// 时间间隔秒数
int thirty = Duration.between(finalTime, initialTime).getSeconds();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斜阳雨陌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值