後端 Date 時間 傳到前端,相差8小時

2021-10-01 01:34:31 字數 2151 閱讀 2383

後台時間正確,返回給前台的時間不正確,和後台差8個小時

後台列印的時間如下:

資料庫儲存時間如下:

介面返回給前台的時間如下:

相差8個小時

spring中對於@restcontroller或者@controller+@responsebody

註解的介面方法的返回值預設是json格式,

所以當對於date型別的資料,在返回瀏覽器端是會被spring-boot

預設的jackson框架轉換,而jackson框架預設的時區gmt(相對於中國是少了8小時)。

1 如果你的專案是 spring-boot

spring.jackson.time-zone=gmt+8
在跟上一條時間戳配置

spring.jackson.date-format=yyyy-mm-dd hh:mm:ss
可以是date時間格式化,一般這兩條語句一起用

2 如果你的專案是 springmvc

在spring mvc中經常需要返回json資料,對於日期型別資料可能會遇到返回格式化不對,返回的時間相差8小時等問題,今天我們一起來分享下在實際開發商過程中遇到的這兩個問題。當然解決方法有很多種,本文中只選一種簡單的方式。

在model中,使用註解方式格式化。示例**如下:

@jsonformat(pattern="yyyy-mm-dd hh:mm:ss")

public date getcreatetime()

public void setcreatetime(date createtime)

這個主要是因為時區的問題,只要在spring的配置檔案中設定好時區就好了。**如下:

non_null

這個原因隱藏很深,當你發現你試過上面的方案後時間還是少的話,

請檢查資料是從什麼時候時間變少了,若從資料庫查出來就少啦,

若你有用的資料庫是mysql,

且mysql.jar是6.x版本的話(與5.x不同),可能你配置的時區錯了,

通過

linux系統時區是utc,而mysql使用的是系統時區。

1  在  資料庫的配置檔案   jdbd url  加上

servertimezone=asia/shanghai,

jdbc:mysql://localhost:3306/dcoj?servertimezone=asia/shanghai
2、修改mysql資料庫的my.cnf檔案的[mysqld]字段,新增default-time-zone=+8:00

3、修改linux系統時區為asia/shanghai

mysql資料庫執行在docker容器中,所以要修改mysql容器的時區為asia/shanghai。

進入mysql容器,鏈結檔案,退出mysql容器,重啟mysql(一氣呵成)

docker exec -it mysql bash

ln -sf /usr/share/zoneinfo/asia/shanghai /etc/localtime

exit

docker restart mysql

還有一種可能是自己的系統時間不對,這種是最小的可能性,網上講到的不多,如果上面你都試啦還不對可以從這方面入

Date轉換,獲取時間相差值

date和string型別互相轉化 dateformat dateformat new dateformat yyyy mm dd hh mm ss date currenttime dateformat.parse 2020 4 12 14 15 00 system.out.println cur...

後端傳到前端的JSON無法遍歷

後端傳輸到前端的json資料不是json物件,而是json格式的字串,所以要把字串解析為物件才能遍歷。jsonobject json jsonobject jsonobject.tojson userinf system.out.println json.tojsonstring response....

前端時間Date顯示問題踩坑

本人非職業前端一枚,但是在 開發過程中遇到相容性問題也是要解決的。日前,bug庫里驚現一時間字串nan nan nan,遂究其因。bug復現 開發過程中一直是使用chrome進行除錯,偶爾使用firefox調優。看到bug圖時,不得已開啟了本機的ie功能,在ie11的環境下,居然還有這種問題。第一反...