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


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

實現思路很簡單,一般都用它來做登錄判斷,比如登錄的時候檢查該用戶是否還在有效期范圍內,如果不在開始時間與結束時間之內,那么就表明該用戶已經過期;

這樣的話,首先就可以想起三個參數,第一個需要獲取當前系統時間,因為我們登錄的時候需要根據當前時間來判斷,該用戶是否還在有效期之內,然后再用數據庫中獲取該用戶的開始時間與結束時間,這兩個字段需要在數據庫中存在;

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


}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM