web項目中關於日期查詢的問題

       做javaWEB項目時,對於時間的處理上總會出現一些非常細緻的問題,這裏總結一下,方便以後查詢。

      一、 有時候前端顯示頁不是日期區間,而是就一個日期,也就是查當天的日期,比方說,就查2019-05-22這一天的數據量,這裏轉換到後端的意思即爲查2019-05-22 00:00:00到2019-05-22 23:59:59這個日期區間的數據記錄,這時候就需要轉換一下:

package com.Jevin.controller;
 
import org.junit.Test;
import java.util.Calendar;
import java.util.Date;
 
 
public class DateUtil {
 
    /**
     * 獲取日期的00:00:00
     * @param startDate
     * @return
     */
    public static Date getStartTime(Date startDate){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(startDate);
        calendar.set(Calendar.HOUR_OF_DAY,0);
        calendar.set(Calendar.MINUTE,0);
        calendar.set(Calendar.SECOND,0);
        return calendar.getTime();
    }
 
    /**
     * 獲取日期的23:59:59
     * @param endDate
     * @return
     */
    public static Date getEndTime(Date endDate){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(endDate);
        calendar.set(Calendar.HOUR_OF_DAY,23);
        calendar.set(Calendar.MINUTE,59);
        calendar.set(Calendar.SECOND,59);
        return calendar.getTime();
    }
 
    @Test
    public void test(){
        System.out.println(getEndTime(new Date()));
    }
 
}

二、將Date類型的時間轉換爲任意格式的String類型的時間,或者將String類型的時間格式轉換爲Date類型:

    /**
     * 將Date類型轉換爲指定格式的String
     */
    @Test
    public void test13(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        String strDate = sdf.format(date);
        System.out.println(strDate);
    }
    /**
     * 將String類型的時間轉換爲Date類型
     */
    @Test
    public void test14() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String strDate = "1949-10-01 12:12:12";
        Date date = sdf.parse(strDate);
        System.out.println(date);
    }

三、獲得時間戳,也就是從1970年到現在的時間的毫秒數,反過來由時間戳獲取時間。這個前後端分離用的比較多,一般前後端傳的時間參數都是時間戳,而不是具體時間,這個時候需要我們將其解析爲時間格式:

    /**
     * 將具體時間轉換爲時間戳
     */
    @Test
    public void test15(){
        Date date = new Date();
        long timeMillis = date.getTime();
        System.out.println(timeMillis);
    }
    /**
     * 將時間戳轉換爲具體時間
     */
    @Test
    public void test16(){
        String strMillis = "1558503981957";
        long time = Long.valueOf(strMillis);
        Date date = new Date(time);
        System.out.println(date);
    }

三、數據庫日期函數TIMESTAMPDIFF()可用來計算兩個日期之間的差值:比方說,我需要計算2020-05-12比2019-05-01多了多少天,可以這樣:

SELECT    TIMESTAMPDIFF(MONTH,"2019-05-01","2020-05-12");

或者當前時間比指定日期多幾天

SELECT    TIMESTAMPDIFF(DAY,"2019-05-01",NOW());

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章