Java LocalDate检查是否为18岁及以上

时间:2016-05-20 06:24:21

标签: java date

我有2个本地日期,一个是生日,一个是今天的日期。 比较它们并检查年龄是否在18岁及以上的最快方法是什么?我是否需要将其转换为字符串并拆分它们然后逐个比较它们?还是有另一种比较方法吗?

3 个答案:

答案 0 :(得分:4)

Java 8及更高版本中内置的java.time框架具有许多方法来解决问题。最好的是找到Period。确切的代码是,

period = Period.between(start, end);

此处start将是您的生日,例如LocalDate.of( 1955 , 1 , 2 )end将是今天:LocalDate.now()

之后,您可以获得period.getYears(),返回int值。它很容易检查您想要的条件。

请参阅Tutorial

参考:Java 8: Calculate difference between two LocalDateTimeLocalDate

答案 1 :(得分:1)

LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(1960, Month.JANUARY, 1);

Period p = Period.between(birthday, today);
long p2 = ChronoUnit.DAYS.between(birthday, today);
System.out.println("You are " + p.getYears() + " years, " + p.getMonths() +
               " months, and " + p.getDays() +
               " days old. (" + p2 + " days total)");

答案 2 :(得分:0)

这是一种非常好的方法

long age = LocalDate.from(birthday)).until(LocalDate.now(), ChronoUnit.YEARS);