中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

keycloak~時(shi)間(jian)不正確(que)的問題(ti)

首先我們應該知道,寫到數據庫里的時間,主要和你的mysql時區system_time_zone有關,而把mysql里的數據取出來,以json形式響應到瀏覽器上,這個時間會經過反序列化的過程,這時時間和注解@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")有關。

和我們相關的幾個時區

  • UTC: Coordinated Universal Time, 國際協調時間,也稱世界標準時間。
  • GMT:Greenwich Mean Time, 格林尼治時間
  • CST:中國標準時間(China Standard Time),為GMT+8
  • BST:英國夏令時間,為GMT+1
  • CST:美國中部時間(Central Standard Time),為GMT-6,正常比北京慢14小時,夏令時慢13小時
  • 東八區:GMT+8

數據庫時區

1、首先查看(kan)MySQL當前的(de)時間(jian)

select curtime();
show variables like "%time_zone%";

time_zone說明mysql使用system的時區,system_time_zone說明system使用CST時區

2、進行修改

set global time_zone = '+8:00'; #修改mysql全局時區為北京時間,也就是我們所在的東8區
set time_zone = '+8:00'; #修改當前會話時區
flush privileges;

直接在數據庫連接串上添加時區

serverTimezone=GMT%2B8 #表示東八區

為代碼添加對象的時區注解

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

修改k8s中pod的時區

...
  containers:
  - name: xxx
    env: 
      - name: TZ
        value: Asia/Shanghai
...
    volumeMounts:
      - name: timezone
        mountPath: /etc/localtime
  volumes:
    - name: timezone
      hostPath:
        path: /usr/share/zoneinfo/Asia/Shanghai

總結

事實上,數據庫里的(de)時(shi)間與(yu)顯示出(chu)現的(de)時(shi)間不一致,與(yu)pod的(de)時(shi)間沒關(guan)系(xi),主要還是(shi)看(kan)你(ni)的(de)數據庫時(shi)區與(yu)@JsonFormat注解的(de)時(shi)區。

  • 如果@JsonFormat如果是GMT+8,而連接串里是GMT+0,會出現下面截圖

  • 如果@JsonFormat如果是GMT+8,連接串里也是GMT+8,會出現我們想要的截圖

  • 最后,如果@JsonFormat如果是GMT+8,連接串里也是CST(可能被認為是美國中部時間,GMT-6),那么它將會比北京時間慢8+6小時

posted @ 2023-04-12 14:27  張占嶺  閱讀(345)  評論(0)    收藏  舉報