欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中使用LocalDate根据日期来计算年龄的实现方法

程序员文章站 2023-12-16 15:52:16
java中和日期直接相关的类有很多,平时最常用到的就是java.util package下面的date和calendar,需要用到格式的时候还会用到java.text.si...

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

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

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

calendar cal = calendar.getinstance();
cal.set(2018, 0, 8);

具体的原因可以看这里的回答:*: why is january month 0 in java calendar?

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

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

import java.time.localdate;

public class testlocaldate {
  public static void main(string[] args) {
    localdate date1 = localdate.of(2018, 1, 6);
    localdate date2 = localdate.of(1991, 1, 3);
    int age = date2.until(date1).getyears();

    system.out.println("you're " + age + " years old.");
  }
}

输出结果:

you're 27 years old.

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

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

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

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

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

public static localdate of(int year, month month, int dayofmonth)
public static localdate of(int year, int month, int dayofmonth)

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

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

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

public period until(chronolocaldate enddateexclusive)

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

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

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

public int getyears()
public int getmonths()
public int getdays()

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

总结

以上所述是小编给大家介绍的java中使用localdate根据日期来计算年龄的实现方法,希望对大家有所帮助

上一篇:

下一篇: