Java LocalDate 检查是否 18 岁及以上

Cho*_*Tan 2 java date

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

小智 7

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

period = Period.between(start, end);
Run Code Online (Sandbox Code Playgroud)

这里start将是你的生日如LocalDate.of( 1955 , 1 , 2 )end将是今天:LocalDate.now()

之后你可以得到period.getYears()which 返回一个int值的信息。它很容易检查你想要的条件。

请参阅教程

参考:Java 8:计算两个 LocalDateTimeLocalDate之间的差异


Cho*_*Tan 2

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)");
Run Code Online (Sandbox Code Playgroud)