时间戳比较(在开始时间与结束时间之内)

时间戳比较(在开始时间与结束时间之内)

实现思路很简单,一般都用它来做登录判断,比如登录的时候检查该用户是否还在有效期范围内,如果不在开始时间与结束时间之内,那么就表明该用户已经过期;

这样的话,首先就可以想起三个参数,第一个需要获取当前系统时间,因为我们登录的时候需要根据当前时间来判断,该用户是否还在有效期之内,然后再用数据库中获取该用户的开始时间与结束时间,这两个字段需要在数据库中存在;

1.首先,我需要需要编写一个uti类,创建一个函数方法:

    /**
     * 时间格式化转换
     * @param time
     * @return
     */
    public static long dateToTimestampString time) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat"yyyy-MM-dd HH:mm:ss");
        try {
            Date date = simpleDateFormat.parsetime);
            long ts = date.getTime)/1000;
            return ts;
        } catch ParseException e) {
            return 0;
        }
    }

    /**
     * 传入参数返回布尔类型,在此方法进行逻辑判断,如果当前时间(currenttime)在开始时间(startTime)与结束时间(endTime)之内就
     * 就返回true,否则就返回false
     * @param currenttime
     * @param startTime
     * @param endTime
     * @return
     */
    public static boolean isUserChickString currenttime,String startTime,String endTime){
       long  c= DateUtil.dateToTimestampcurrenttime);
        long s=dateToTimestampstartTime);
        long e= DateUtil.dateToTimestampendTime);
        if s<c&&c<e){
            return  true;
        }else {
            return  false;
        }
    }

2.在登录的拦截器中调用DateUtil中的isUserChick方法即可,需要传入三个参数,当前系统时间、开始时间、结束时间

/**
             *判断用户是否账号正常
             *登录判断当前时间是否在开始时间和结束时间范围内,如果不在提示账号过期
             */
//获取当前系统时间
                Date date = new Date);
                SimpleDateFormat dateFormat = new SimpleDateFormat"yyyy-MM-dd");//可以方便地修改日期格式
                String currenttime = dateFormat.formatdate);
                //获取用户开始时间
                String startTime = user.getStartTime);
                //获取用户结束时间
                String endTime = user.getEndTime);
                //判断账号是否过期
                boolean flag=DateUtil.isUserChickcurrenttime,startTime,endTime);
                if flag==false){
                    throw new ExpiredCredentialsException);
                }

因为我们登陆采用的是Shiro拦截器,所以,如果发现该用户不再范围之内,直接抛出异常给前端即可;

额外逻辑

该模块还需要一点就是,如果传过来的开始时间与结束时间为空,那么就证明该用户是永久,不再进入时间戳判断:

if StringUtil.isNotEmptyuser.getStartTime))&&StringUtil.isNotEmptyuser.getEndTime))){


}

Published by

风君子

独自遨游何稽首 揭天掀地慰生平