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

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

实现思路很简单,通常都用它来作登陆判断,好比登陆的时候检查该用户是否还在有效期范围内,若是不在开始时间与结束时间以内,那么就代表该用户已通过期;前端

这样的话,首先就能够想起三个参数,第一个须要获取当前系统时间,由于咱们登陆的时候须要根据当前时间来判断,该用户是否还在有效期以内,而后再用数据库中获取该用户的开始时间与结束时间,这两个字段须要在数据库中存在;数据库

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

    /**
     * 时间格式化转换
     * @param time
     * @return
     */
    public static long dateToTimestamp(String time) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date date = simpleDateFormat.parse(time);
            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 isUserChick(String currenttime,String startTime,String endTime){
       long  c= DateUtil.dateToTimestamp(currenttime);
        long s=dateToTimestamp(startTime);
        long e= DateUtil.dateToTimestamp(endTime);
        if (s<c&&c<e){
            return  true;
        }else {
            return  false;
        }
    }

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

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

由于咱们登录采用的是Shiro拦截器,因此,若是发现该用户再也不范围以内,直接抛出异常给前端便可;code

额外逻辑

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

if (StringUtil.isNotEmpty(user.getStartTime())&&StringUtil.isNotEmpty(user.getEndTime())){}
相关文章
相关标签/搜索