设为首页 加入收藏

TOP

Java中使用LocalDate根据日期来计算年龄
2018-01-17 13:05:35 】 浏览:237
Tags:Java 使用 LocalDate 根据 日期 计算 年龄

Java中和日期直接相关的类有很多,平时最常用到的就是java.util package下面的Date和Calendar,需要用到格式的时候还会用到java.text.SimpleDateFormat


首先吐槽一下,Date和Calendar实际用起来还是有一些别扭的,刚开始用的时候不熟悉,老是分不清Date和Calendar类的具体用法和区别。


而且Calendar类的set方法来设置日期时又有一些反人类,设置月份的时候总是要脑补一下减去1,比如要设置为2018年1月6日就要设置成2018,0,6,因为在这里一月是用0来表示的:


具体的原因可以看这里的回答:StackOverflow: Why is January month 0 in Java Calendar?


反正我是不太看得下去。。


前几天有一个简单的需求,就是根据某两个日期来计算出年龄。上网查了一下,直接抛弃了难用的Date和Calendar类,直接用java.time.LocalDate来做。话不多说直接上代码:


输出结果:


抛弃了略显复杂令人头大的Date和Calendar类之间的互相转换调用,代码读起来也特别清晰,是不是很爽!


java.time是Java 8中新引入的一个日期时间库,下面的这些方法都是java.time包里面的。


下面来看一下这段代码是怎么来用简单清爽的方式计算时间差的:


首先,LocalDate是一个immutable class(不可变类),所以和String类一样,不需要new一个新的对象才可以使用(?)


然后是LocalDate类用于设定日期的of方法:


of一共有三个重载的方法,这里举出其中的两个。第一个的Month类是一个枚举类型,包含了月份的英文名称,如JANUARY, NOVEMBER等


第二个就是再正常不过的设置年月日,好消息是这里的month是从1开始的,也就是说再也不用手动减去1了!!!


下面是LocalDate类用于比较日期的until方法:


这个方法返回的是一个Period类型的对象。


Period代表的是形如“2年,3个月,4天”的一段时间间隔。接下来调用的getYears方法就是属于Period类的。


最后再来看一下Period类的一些获取时间间隔的方法:


这三个方法分别用于获取时间间隔的年、月和日。对,就是这么简单。


闲来无事时看看语言的新特性,多掌握些技能总是不会错的。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python字符编码详细分析 下一篇Java 获取ip地址和网络接口

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目