zoukankan      html  css  js  c++  java
  • 时间戳比较(在开始时间与结束时间之内)

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

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

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

    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方法即可,需要传入三个参数,当前系统时间、开始时间、结束时间

    /**
                 *判断用户是否账号正常
                 *登录判断当前时间是否在开始时间和结束时间范围内,如果不在提示账号过期
                 */
    //获取当前系统时间
                    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拦截器,所以,如果发现该用户不再范围之内,直接抛出异常给前端即可;

    额外逻辑

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

    if (StringUtil.isNotEmpty(user.getStartTime())&&StringUtil.isNotEmpty(user.getEndTime())){


    }
  • 相关阅读:
    家用游戏机简史
    九:二叉搜索树与双向链表(二叉搜索树转为有序双向链表)
    诺心(LECAKE) | 氪加
    微博书 | 氪加
    王利芬对话蒲易 ——花店如何成为高端电商?_北京_歇会儿网
    王利芬对话蒲易 ——花店如何成为高端电商?_线下活动报名_优米网
    团队介绍 | 魅动 Magic Motion
    魅动成人用品情趣跳蛋女用自慰器具 魅惑紫【图片 价格 品牌 报价】-京东商城
    最新创业好项目 | 投资项目推荐 | 数据库 | 氪加 特效
    Fancy
  • 原文地址:https://www.cnblogs.com/StanleyBlogs/p/11021859.html
Copyright © 2011-2022 走看看