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