項目總結45:由java.util.Date類型引發的前端日期展現異常問題解決

項目總結45:由java.util.Date類型引發的前端日期展現異常問題解決

問題:

  項目中碰到一個問題,Mysql數據庫中讀取的date數據,再前端經過Bootstrap展現,老是以下格式html

 

 

 

   後端實體類,也對時間格式進行了處理,以下:前端

package com.hs.dao.entity.lop.function;

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class FunctionZrxReview {

    private static final long serialVersionUID = 1L;

    @DateTimeFormat(pattern = "yyyy-MM-dd") //入參
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") //出參
    private Date time; // 時間
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") //出參
    public Date getTime() {
        return this.time;
    }

    public void setTime(Date time) {
        this.time = time;
    }
    
    //other code is ignored.....

}

 

 排查:

  一開始一位是時間格式沒有進行合適的處理,嘗試了各類方式,都不行,最後發現問題出在java.util.Date類型上,將java.util.Date;改爲 java.sql.Date,問題迎刃而解;java

 

總結:java.util.Date和java.sql.Date的區別及應用

java.util.Date 就是在除了SQL語句的狀況下面使用
java.sql.Date 是針對SQL語句使用的,它只包含日期而沒有時間部分
它都有getTime方法返回毫秒數,天然就能夠直接構建
java.util.Date d = new java.util.Date(sqlDate.getTime());
...sql

--------------------------------------------------------------------------------
java.util.Date 是 java.sql.Date 的父類(注意拼寫)
前者是經常使用的表示時間的類,咱們一般格式化或者獲得當前時間都是用他
後者以後在讀寫數據庫的時候用他,由於PreparedStament的setDate()的第2參數和ResultSet的getDate()方法的第2個參數都是java.sql.Date
轉換是
java.sql.Date date=new Java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
反過來是同樣的數據庫

--------------------------------------------------------------------------------
繼承關係:java.lang.Object --》 java.util.Date --》 java.sql.Date
具體的轉換關係就是java.util.Date d=new java.util.Date (new Java.sql.Date());後端

--------------------------------------------------------------------------------
sql.date,通常是在數據庫的時間字段,util.date通常是平常日期字段this

--------------------------------------------------------------------------------
java.sql.Date主要是用於sql中的!
而java.util.Date用語通常的環境下都行!spa

 

參考資料:

1-http://www.javashuo.com/article/p-ccsgtnfd-ds.htmlcode

相關文章
相關標籤/搜索