有一种场景会抛出一些通知。作为用户,我将设置一个密码。已设置的密码将有一个有效期。假设它将于 2024 年 7 月 14 日到期。应检查密码是否会在当前日期后 90 天内过期。在此基础上,将会显示一条通知,表明该证书将在 90 天后过期。一旦达到到期日期,应该为用户提供一段宽限期,以便从到期之日起更新密码。假设从过期之日起再次为用户更新密码提供了 30 天的宽限期。在此基础上再次发送通知。我已经尝试了 90 天,它有效,但从到期之日起有 30 天的宽限期,我不知道如何获取它。
public static void main(String ars[]) throws Exception{
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yy", Locale.ENGLISH);
try {
int expiryCount =90;
Date date = formatter.parse("12-04-2024");
Date stratDate = date;
Date endDate = new Date();
long diff = 0;
long noOfDays = 0;
diff = stratDate.getTime() - endDate.getTime();
System.out.println("End date ::: " + endDate);
System.out.println("Date::: " + date);
noOfDays = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
long a = TimeUnit.DAYS.toDays(noOfDays);
int days = (int)noOfDays;
// logger.info("No of Day after difference are - " + TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS));
System.out.println(a);
System.out.println(noOfDays);
if(days <= expiryCount) {
System.out.println("Days are less!!!!");
}else {
System.out.println("More days left!!");
}
}
catch (ParseException e) {
e.printStackTrace();
}
}
使用 java.time.Instant 执行此类计算。 代码可能如下所示:
Date date = formatter.parse("12-04-2024");
Instant expiry = date.toInstant();
Duration d = Duration.between(Instant.now(), expiry);
System.out.println( d.toDays() );
这会打印到期前的天数。使用该值来采取进一步的决策和行动。