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

springboot如何統(tǒng)一設(shè)置時(shí)區(qū)

 更新時(shí)間:2023年01月06日 15:22:25   作者:阿良@  
這篇文章主要介紹了springboot如何統(tǒng)一設(shè)置時(shí)區(qū)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot 統(tǒng)一設(shè)置時(shí)區(qū)

控制springboot服務(wù)的時(shí)區(qū)為東八區(qū)

@SpringBootApplication
public class Application {
? public static void main(String[] args) {
? ? // 設(shè)置時(shí)區(qū)為上海時(shí)區(qū),即東八區(qū)
? ? TimeZone.setDefault(TimeZone.getTimeZone(ZoneId.SHORT_IDS.get("CTT")));
? ? SpringApplication.run(Application.class, args);
? }
}

以下是測試?yán)?/p>

springboot 啟動(dòng)時(shí)候設(shè)置時(shí)區(qū),如下代碼所示

@SpringBootApplication
public class EwPbServerApplication {

? ? public static void main(String[] args) {
? ? ? ? TimeZone timeZone = TimeZone.getTimeZone("UTC");
? ? ? ? TimeZone.setDefault(timeZone);
? ? ? ? SpringApplication.run(EwPbServerApplication.class, args);
? ? }
}

測試請(qǐng)求接口獲取時(shí)間

?? ?@GetMapping("test")
? ? @ApiOperation(value = "測試時(shí)間", httpMethod = "GET")
? ? public void test() {
? ? ? ? //當(dāng)前時(shí)間為 2022-09-06 17:46
? ? ? ? //啟動(dòng)類設(shè)置時(shí)區(qū)后,獲取當(dāng)前時(shí)間
? ? ? ? Date date = new Date();
? ? ? ? DateTime date1 = DateUtil.date();
? ? ? ? LocalDateTime localDateTime = LocalDateTime.now();
? ? ? ? //設(shè)置時(shí)區(qū)為-東八區(qū)
? ? ? ? LocalDateTime.now(ZoneId.of("Asia/Shanghai"))

? ? ? ? log.info("date=={}", date);
? ? ? ? log.info("date1=={}", date1);
? ? ? ? log.info("localDateTime=={}", localDateTime);
? ? ? ? log.info("now=={}", now);
// ? ? ? ?2022-09-06 09:47:01.385 ?xxxx ?: date==Tue Sep 06 09:47:01 UTC 2022
// ? ? ? ?2022-09-06 09:47:01.385 ?xxxx ?: date1==2022-09-06 09:47:01
// ? ? ? ?2022-09-06 09:47:01.386 ?xxxx ?: localDateTime==2022-09-06T09:47:01.381
// ? ? ? ?2022-09-06 09:47:01.386 ?xxxx ?: now==2022-09-06T17:47:01.385
? ? }

由測試結(jié)果得知,springboot 啟動(dòng)時(shí)設(shè)置時(shí)區(qū)之后全局生效,但是優(yōu)先級(jí)小于手動(dòng)設(shè)置

springboot mysql 時(shí)區(qū)問題總結(jié)

尋找原因

后端開發(fā)中常見的幾個(gè)時(shí)區(qū)設(shè)置

第一個(gè)設(shè)置點(diǎn)配置文件   spring.jackson.time-zone

第二個(gè)設(shè)置點(diǎn) 高版本SpringBoot版本 mysql-connector-java 用的是8.X,mysql8.X的jdbc升級(jí)了,增加了時(shí)區(qū)(serverTimezone)屬性,并且不允許為空。

第三個(gè)設(shè)置點(diǎn) mysql  time_zone變量

詞義

serverTimezone臨時(shí)指定mysql服務(wù)器的時(shí)區(qū)

spring.jackson.time-zone  設(shè)置spring默認(rèn)時(shí)區(qū)

system_time_zone mysql服務(wù)器時(shí)區(qū) ,time_zone默認(rèn)System追隨system_time_zone

幾種情況

1、time_zone 為 System,serverTimezone為GMT+8,jackson.time-zone未定義

插入情況

再查詢此條記錄

個(gè)人覺得Spring默認(rèn)時(shí)區(qū)為格林尼治時(shí)區(qū),web服務(wù)器當(dāng)前時(shí)區(qū)為東八區(qū),進(jìn)行加8操作。

2、set GLOBAL time_zone = '+3:00',serverTimezone為GMT+8,jackson.time-zone為GMT+8

createTime 為 timestamp類型

修改配置后,需要重啟SpringBoot

新增情況

數(shù)據(jù)庫中顯示

查詢記錄

個(gè)人理解,serverTimezone設(shè)置覆蓋掉了mysql的time_zone變量,跟SpringBoot會(huì)話時(shí)區(qū)還是東8

3、上述環(huán)境,不重啟SpringBoot,直接改變time_zone = '+5:00'

改變后,上條記錄往后調(diào)整2小時(shí)。

SpringBoot查詢,一樣

說明,timeStamp類型存儲(chǔ)的是格林尼治時(shí)間,加上time_zone時(shí)區(qū)

當(dāng)time_zone變化時(shí),會(huì)話沒結(jié)束,serverTimeZone東8還是對(duì)應(yīng)time_zone的東3

SpringBoot插入

個(gè)人理解,serverTimeZone東8 還是和 time_zone 東3對(duì)應(yīng),但是插入發(fā)現(xiàn) 當(dāng)前time_zone已經(jīng)改成東5,就加2小時(shí)。

重啟SpringBoot,重新查詢

雖然,mysql變量time_zone為+5,但是重啟后,serverTimeZone直接覆蓋,設(shè)置時(shí)間區(qū)間為東8

重新把time_zone改回東3

改回重新打開表,發(fā)現(xiàn)又回來了

不啟動(dòng)SpringBoot,查詢數(shù)據(jù),還是老樣子

此時(shí),添加一條數(shù)據(jù)。

往前推了2小時(shí)。

SpringBoot查詢

重啟SpringBoot,查出來就是庫中數(shù)據(jù)。

4、serverTimezone為GMT,jackson.time-zone為GMT+8,time_zone為東3

serverTimeZone為格林尼治時(shí)間,web服務(wù)器為東八,所以直接推遲8小時(shí)

取出來剛好反一下,顯示正常。

此時(shí),修改serverTimeZone為東八。

5、時(shí)間字段類型為timestamp,使用默認(rèn)current_timestamp,  serverTimezone為GMT,jackson.time-zone為GMT+8,time_zone為東3

因mysql時(shí)區(qū)東三時(shí)間為

插入后數(shù)據(jù)為

但是serverTimeZone為格林尼治時(shí)間,jackson.time-zone為東八,加8小時(shí)

6、時(shí)間字段類型為datetime,serverTimezone為GMT+8,jackson.time-zone為GMT+8,time_zone為東3

插入

庫中

查詢

time_zone從東3修改為東5

重新打開庫

不啟動(dòng)SpringBoot

重啟SpringBoot,還是一樣。

修改serverTimeZone為GMT,其他不改動(dòng)

查詢

總結(jié)

jackson.time-zone管前端到web服務(wù)器 轉(zhuǎn)換的時(shí)區(qū)。

如果是時(shí)間類型為datetime,serverTimeZone說了算。

如果時(shí)間類型為timestamp

1、當(dāng)time_zone和serverTimeZone不統(tǒng)一情況,會(huì)話中,表中時(shí)間數(shù)據(jù),按照serverTimeZone設(shè)定

2、如果過程中,修改了time_zone變量,庫中數(shù)據(jù)直接變更。但是不影響當(dāng)前會(huì)話查詢,新增數(shù)據(jù),就會(huì)根據(jù)time_zone調(diào)整量,調(diào)整實(shí)際入庫。

3、SpringBoot重啟,其實(shí)就是新會(huì)話。情況同上_1。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java括號(hào)匹配舉例詳解

    Java括號(hào)匹配舉例詳解

    看到大家對(duì)括號(hào)匹配問題很感興趣,下面這篇文章主要給大家介紹了關(guān)于Java括號(hào)匹配的相關(guān)資料,括號(hào)匹配是一種常見的編程問題,涉及到在給定的字符串中判斷括號(hào)是否匹配,需要的朋友可以參考下
    2023-10-10
  • Java基礎(chǔ)知識(shí)之BufferedReader流的使用

    Java基礎(chǔ)知識(shí)之BufferedReader流的使用

    這篇文章主要介紹了Java基礎(chǔ)知識(shí)之BufferedReader流的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 實(shí)例詳解Java中如何對(duì)方法進(jìn)行調(diào)用

    實(shí)例詳解Java中如何對(duì)方法進(jìn)行調(diào)用

    這篇文章主要介紹了實(shí)例詳解Java中如何對(duì)方法進(jìn)行調(diào)用,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • Java編程實(shí)現(xiàn)遍歷兩個(gè)MAC地址之間所有MAC的方法

    Java編程實(shí)現(xiàn)遍歷兩個(gè)MAC地址之間所有MAC的方法

    這篇文章主要介紹了Java編程實(shí)現(xiàn)遍歷兩個(gè)MAC地址之間所有MAC的方法,涉及Java針對(duì)MAC的遍歷獲取與字符串轉(zhuǎn)換相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • java基于移位操作實(shí)現(xiàn)二進(jìn)制處理的方法示例

    java基于移位操作實(shí)現(xiàn)二進(jìn)制處理的方法示例

    這篇文章主要介紹了java基于移位操作實(shí)現(xiàn)二進(jìn)制處理的方法,結(jié)合實(shí)例形式分析了java針對(duì)二進(jìn)制的移位操作處理技巧,需要的朋友可以參考下
    2017-02-02
  • Spring Cloud動(dòng)態(tài)配置刷新RefreshScope使用示例詳解

    Spring Cloud動(dòng)態(tài)配置刷新RefreshScope使用示例詳解

    這篇文章主要為大家介紹了Spring Cloud動(dòng)態(tài)配置刷新RefreshScope使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java Spring注解之@Async的基本用法和示例

    Java Spring注解之@Async的基本用法和示例

    Spring為任務(wù)調(diào)度與異步方法執(zhí)行提供了注解支持,通過在方法上設(shè)置@Async注解,可使得方法被異步調(diào)用,下面這篇文章主要給大家介紹了關(guān)于Java Spring注解之@Async的基本用法和示例,需要的朋友可以參考下
    2022-03-03
  • SpringAop的依賴注入方式

    SpringAop的依賴注入方式

    文章介紹了Spring框架的依賴注入(DI)和面向切面編程(AOP)的基本概念和實(shí)現(xiàn)方式,Spring通過IOC容器管理Bean的創(chuàng)建和依賴注入,并提供了多種AOP實(shí)現(xiàn)方式,包括代理機(jī)制和配置選項(xiàng)
    2025-02-02
  • 深入剖析Java編程中的序列化

    深入剖析Java編程中的序列化

    這篇文章主要介紹了深入剖析Java編程中的序列化,文中談到了序列化時(shí)對(duì)象的繼承等各種問題,案例詳盡,強(qiáng)烈推薦!需要的朋友可以參考下
    2015-07-07
  • Java簡單從文件讀取和輸出的實(shí)例

    Java簡單從文件讀取和輸出的實(shí)例

    下面小編就為大家?guī)硪黄狫ava簡單從文件讀取和輸出的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09

最新評(píng)論

渑池县| 武胜县| 贺兰县| 遂昌县| 沙坪坝区| 旌德县| 文昌市| 夏津县| 靖宇县| 南康市| 公主岭市| 读书| 宜良县| 固始县| 乌鲁木齐县| 东辽县| 时尚| 旌德县| 辽中县| 息烽县| 察哈| 徐州市| 铜川市| 漾濞| 桦甸市| 兰考县| 湘潭市| 田林县| 南郑县| 永德县| 彝良县| 奉节县| 南召县| 安多县| 连平县| 云和县| 柳林县| 禄丰县| 烟台市| 汤原县| 南华县|