最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何解決java獲取時間相差8小時的問題

 更新時間:2021年09月13日 12:02:10   作者:穿越23小時  
最近使用new date()獲取的時間會和真實的本地時間相差8小時。本文就詳細的來介紹一下解決java獲取時間相差8小時的問題,感興趣的可以了解一下

三種時間差錯問題:

  • java下使用new date()獲取的時間會和真實的本地時間相差8小時。
  • 本地獲取的時間沒有錯,存入數(shù)據(jù)庫的時候時間相差8小時。
  • 數(shù)據(jù)庫時間沒有錯,獲取到了后端,之后返回給前端相差8小時。

原因:

  • new date()調用的是jvm時間,而jvm使用的時間默認是0時區(qū)的時間,即:和北京時間將會相差8小時。
  • mybatis將本地的數(shù)據(jù)傳入到mysql數(shù)據(jù)庫服務器的時候,服務器會對數(shù)據(jù)進行檢測,會把date類型的數(shù)據(jù)自動轉換為mysql服務器所對應的時區(qū),即0時區(qū),所以會相差8小時。
  • springboot中對加了@RestController或者@Controller+@ResponseBody注解的方法的返回值默認是Json格式,
  • 所以,對date類型的數(shù)據(jù),在返回瀏覽器端時,會被springboot默認的Jackson框架轉換,而Jackson框架默認的時區(qū)GMT(相對于中國是少了8小時)。所以最終返回到前端結果是相差8小時

解決方案:

手動設置jvm時間:將時間改為第8時區(qū)的時間:

TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));

溫馨提示:如果是springboot項目,可以面向切面加上這個,或者啟動main類上加上如下代碼:

@PostConstruct
    void started() {
        TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
    }

注意:不要用下面方式,這個方式是錯的,GMT-8最后獲取的時區(qū)還是0時區(qū)的。網(wǎng)上很多的教程說的是下面的方式,親測不行。

TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz);

在apprication.yml文件中配置一下數(shù)據(jù)庫連接信息,url加上這么一句:
&serverTimezone=GMT%2b8

在這里插入圖片描述

可以解決存入數(shù)據(jù)庫的時間肯定是對的,本地獲取的時間則未必是北京時間。將spring的json構造器的時區(qū)改正即可,在application.yml文件中添加:

在這里插入圖片描述

或者可以使用注解,在entity實體類的date數(shù)據(jù)上添加注解,那么數(shù)據(jù)庫傳回的data數(shù)據(jù)要轉換為json格式的時候就是北京時間了,再次傳回到前端的時候,也不會出現(xiàn)時區(qū)問題。

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
 private Date lastTime;

不過,指的注意的是:這樣做,如果你的jvm時間依然是后臺0時區(qū)的,那么后臺要用時間執(zhí)行邏輯的時候,就要注意了,時間依然相差8小時,還是建議用第一方法,直接整個jvm改為北京的8時區(qū)。

總結:都是時區(qū)問題

三個問題對應三種場景:

  • 后臺要存時間到數(shù)據(jù)庫的時候:用方法2解決本地時間和數(shù)據(jù)庫時間的問題;本質是sql的服務器時區(qū)是0時區(qū)導致。
  • 后臺要使用本地時間的時候,改變jvm的時區(qū);本質是jvm的時區(qū)是0時區(qū)導致。
  • 后臺返回數(shù)據(jù)到前端的時候出現(xiàn)時區(qū)問題,用注解或者yml中配置json生成器解決轉換格式的問題。本質是json的構造器用的時區(qū)是0時區(qū)導致。

到此這篇關于如何解決java獲取時間相差8小時的問題的文章就介紹到這了,更多相關java獲取時間相差8小時內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot整合kafka遇到的版本不對應問題及解決

    SpringBoot整合kafka遇到的版本不對應問題及解決

    這篇文章主要介紹了SpringBoot整合kafka遇到的版本不對應問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • springboot的緩存技術的實現(xiàn)

    springboot的緩存技術的實現(xiàn)

    這篇文章主要介紹了springboot的緩存技術的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Java?spring?通過注解方式創(chuàng)建對象的示例詳解

    Java?spring?通過注解方式創(chuàng)建對象的示例詳解

    這篇文章主要介紹了java?spring?通過注解方式創(chuàng)建對象,本文結合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • JAVA獲取本地MAC地址的方法

    JAVA獲取本地MAC地址的方法

    這篇文章主要介紹了JAVA獲取本地MAC地址的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Springboot內外部logback多環(huán)境配置詳解

    Springboot內外部logback多環(huán)境配置詳解

    本文主要介紹了Springboot內外部logback多環(huán)境配置詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Spring?Data?JPA查詢方式及方法名查詢規(guī)則介紹

    Spring?Data?JPA查詢方式及方法名查詢規(guī)則介紹

    這篇文章主要介紹了Spring?Data?JPA查詢方式及方法名查詢規(guī)則,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 模仿百度紅包福袋界面實例代碼

    模仿百度紅包福袋界面實例代碼

    新年到新年到,紅包搶不停。在我搶紅包的時候意外的發(fā)現(xiàn)了百度的福袋界面挺不錯的,于是抽時間專門寫篇文章來完成百度紅包界面吧
    2016-02-02
  • Mybatis如何實現(xiàn)@Select等注解動態(tài)組合SQL語句

    Mybatis如何實現(xiàn)@Select等注解動態(tài)組合SQL語句

    這篇文章主要介紹了Mybatis如何實現(xiàn)@Select等注解動態(tài)組合SQL語句,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Spring Boot使用AOP實現(xiàn)REST接口簡易靈活的安全認證的方法

    Spring Boot使用AOP實現(xiàn)REST接口簡易靈活的安全認證的方法

    這篇文章主要介紹了Spring Boot使用AOP實現(xiàn)REST接口簡易靈活的安全認證的方法,非常具有實用價值,需要的朋友可以參考下
    2018-11-11
  • 詳解SpringBoot+Lucene案例介紹

    詳解SpringBoot+Lucene案例介紹

    這篇文章主要介紹了詳解SpringBoot+Lucene案例介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06

最新評論

隆尧县| 巧家县| 铁岭县| 溧水县| 台安县| 墨竹工卡县| 南开区| 杨浦区| 湖州市| 宝兴县| 清远市| 枞阳县| 溧水县| 丰宁| 广宗县| 高陵县| 康乐县| 喀什市| 丁青县| 武隆县| 道孚县| 固安县| 广州市| 进贤县| 洪泽县| 永胜县| 涿鹿县| 辉县市| 达州市| 吉木萨尔县| 平安县| 休宁县| 东安县| 河源市| 南涧| 蒙城县| 台江县| 南澳县| 江川县| 色达县| 民权县|