1. 程式人生 > >前臺用時間查詢記錄的問題

前臺用時間查詢記錄的問題

遇到一個問題,這裡總結一下:

我做的異常日誌模組,有根據時間查詢日誌記錄的問題,一開始我考慮日誌一般都是具體到時分秒的,查詢時時間選擇器的元件用日期加時間的比較合適,後來需求說,一般不管你後臺存的資料是不是具體到時分秒,前臺查詢用的都是日期,於是我將日期時間選擇器改成了日期選擇器,這裡我們用的前端框架是layui。

然後就出現了一個問題,時間範圍一般是2018-08-23 ~ 2018-08-25形式,當前後選擇的是同一天

(比如2018-08-23 ~ 2018-08-23)時,本來是想查詢23號的資料,但是卻顯示沒有資料。

原因在於,日期的選擇時間往往是從00:00:00開始的,所以沒有查出來資料合乎情理。

為了達到前後選擇同一天可以查詢出資料的結果,需要在後臺進行處理(是經過別人指點的,哈哈)

處理方法,給前面的時間拼接 00:00:00,給後面的時間拼接 23:59:59,這樣問題就解決了

這裡附上我的serviceImp層的程式碼,注意拼接時的空格問題

public Map<String, Object> findByPage(Integer page, Integer limit, InterfaceInvokeLogVo interfaceInvokeLogVo) {
        Date beginInvokeStartTime = null; // 呼叫開始時間範圍的起始時間
        Date endInvokeStartTime = null; // 呼叫開始時間範圍的結束時間
        String beginInvokeStartTimeStr = "";
        String endInvokeStartTimeStr = "";


        PageHelper.startPage(page, limit);

        // 前臺傳過來的時間為2018-08-01 ~ 2018-08-02
        // 16:00:00,開始時間的後面有一個空格,結束時間的前面有一個空格
        String invokeStartTimeRangStr = interfaceInvokeLogVo.getInvokeStartTime();
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss ");
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat(" yyyy-MM-dd hh:mm:ss");


        if (invokeStartTimeRangStr != null && !invokeStartTimeRangStr.equals("")) {
            beginCreateDateStr = (createDateRangStr.split("~"))[0] + "00:00:00 ";
            endCreateDateStr = (createDateRangStr.split("~"))[1] + " 23:59:59";
            try {
                beginInvokeStartTime = simpleDateFormat1.parse(beginInvokeStartTimeStr);
                endInvokeStartTime = simpleDateFormat2.parse(endInvokeStartTimeStr);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }

        interfaceInvokeLogVo.setBeginInvokeStartTime(beginInvokeStartTime);
        interfaceInvokeLogVo.setEndInvokeStartTime(endInvokeStartTime);

        Page<SysErrorLogVo> interfaceInvokeLogs = interfaceInvokeLogMapper.selectPageRecord(interfaceInvokeLogVo);
        return ResultUtil.put(ConstantUtil.REQUEST_SUCCESS, interfaceInvokeLogs.getTotal(), "",
                interfaceInvokeLogs.getResult());
    }