Java 计算日期范围并返回true

Java 计算日期范围并返回true,java,Java,我想用Java8+比较2个日期,如果密码超过45天,则返回false。如果可能的话,所有的都应该放在一行中,因为我想用它来实现Spring安全性。这可能吗 大概是这样的: boolean isExpired = password_changed_at.minusDays(45).isBefore(LocalDateTime.now()); 编辑: 是的,您的方法是正确的,不需要任何if块,只要在一条语句中返回trueif持续天数大于45天,或者false。您还可以重构此方法以接受天数 priv

我想用Java8+比较2个日期,如果密码超过45天,则返回false。如果可能的话,所有的都应该放在一行中,因为我想用它来实现Spring安全性。这可能吗

大概是这样的:

boolean isExpired = password_changed_at.minusDays(45).isBefore(LocalDateTime.now());
编辑:


是的,您的方法是正确的,不需要任何
if
块,只要在一条语句中返回
true
if持续天数大于45天,或者
false
。您还可以重构此方法以接受天数

private boolean compareExpireDates(LocalDateTime password_changed_at,long noOfDays) {

   return Duration.between(password_changed_at, LocalDateTime.now()).toDays()>noOfDays
}

如果你能发布代码,一切都有可能是的。到目前为止你试过什么?上面的线不起作用了?有什么问题吗?还是错误@Peterpenzov由于Java中的行没有长度限制,所以您可以在一行中编写每个程序。除非您允许将来更改密码,否则这将始终是正确的。这个答案是正确的,但可能值得指出的是,现在一些与安全相关的组织不鼓励使用密码过期策略。另外,名为“comparexx”的方法通常返回一个int(如在Comparator中);返回布尔值的方法最好称为“hasExpired”。
private boolean compareExpireDates(LocalDateTime password_changed_at,long noOfDays) {

   return Duration.between(password_changed_at, LocalDateTime.now()).toDays()>noOfDays
}