日期计算

问题描述 投票:0回答:1

有一种场景会抛出一些通知。作为用户,我将设置一个密码。已设置的密码将有一个有效期。假设它将于 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 date datetime calculation
1个回答
0
投票

使用 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() );

这会打印到期前的天数。使用该值来采取进一步的决策和行动。

© www.soinside.com 2019 - 2024. All rights reserved.