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())){


    }
  • 相关阅读:
    Hibernate学习笔记
    Servlet:从入门到实战学习(3)---Servlet实例【图文】
    Servlet:从入门到实战学习(2)---Servlet生命周期
    Servlet:从入门到实战学习(1)---全·环境配置
    java复习(9)---数据库JDBC
    java复习(8)---I/O
    java复习(7)---集合类、泛型
    java复习(6)---异常处理
    C#尝试读取或写入受保护的内存。这通常指示其他内存已损坏
    C# TTS 文本转语音中断实现方式
  • 原文地址:https://www.cnblogs.com/StanleyBlogs/p/11021859.html
Copyright © 2011-2022 走看看