時間戳比較(在開始時間與結束時間以內)

時間戳比較(在開始時間與結束時間以內)

實現思路很簡單,通常都用它來作登陸判斷,好比登陸的時候檢查該用戶是否還在有效期範圍內,若是不在開始時間與結束時間以內,那麼就代表該用戶已通過期;前端

這樣的話,首先就能夠想起三個參數,第一個須要獲取當前系統時間,由於咱們登陸的時候須要根據當前時間來判斷,該用戶是否還在有效期以內,而後再用數據庫中獲取該用戶的開始時間與結束時間,這兩個字段須要在數據庫中存在;數據庫

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())){}
相關文章
相關標籤/搜索