首页 > 其他分享 >keycloak~时间不正确的问题

keycloak~时间不正确的问题

时间:2023-04-12 14:34:22浏览次数:43  
标签:JsonFormat 正确 zone 时间 time 时区 keycloak GMT

首先我们应该知道,写到数据库里的时间,主要和你的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、首先查看MySQL当前的时间

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

总结

事实上,数据库里的时间与显示出现的时间不一致,与pod的时间没关系,主要还是看你的数据库时区与@JsonFormat注解的时区。

  • 如果@JsonFormat如果是GMT+8,而连接串里是GMT+0,会出现下面截图

  • 如果@JsonFormat如果是GMT+8,连接串里也是GMT+8,会出现我们想要的截图

  • 最后,如果@JsonFormat如果是GMT+8,连接串里也是CST(可能被认为是美国中部时间,GMT-6),那么它将会比北京时间慢8+6小时

标签:JsonFormat,正确,zone,时间,time,时区,keycloak,GMT
From: https://www.cnblogs.com/lori/p/17309605.html

相关文章

  • VMware ESXi6.7服务器,确认用户名密码正确,但是web管理界面无法正常登陆
    VMwareESXi6.7服务器,确认用户名密码正确,但是web管理界面无法正常登陆。修改完成密码后,连接显示器键盘,操作没有问题。但是远程通过web管理界面访问时,提示:“由于用户名火密码不正确,无法完成登陆”确认用户名密码没错,连接显示器键盘,操作没有问题。 需要restartmanagementage......
  • vmware esxi 用户名(账号)密码明明正确,网页却无法登录管理后台的解决办法大全
    相信使用过VmwareEsxi虚拟系统的网友们可能都偶尔遇到过,明明vmwareesxi用户名密码是正确的,管理网页却无法登录管理的现象。一、账号密码正常但无法登录现象:隔了一段时间没有登录,用服务器名或IP再登录Vmware的网页管理后台,输入正确的管理员用户名及密码,之前登录都非常正常......
  • 算法导论-第3章-描述运行时间
    第3章描述运行时间本章研究算法的渐近(asymptotic)效率。我们关心的是,当输入规模足够大时,算法运行时间与随着输入规模的增大发生怎样的变化,即研究\(T(n)\)随着\(n\)的增大发生怎样的变化。3.1\(\Omicron\)符号,\(\Omega\)符号,\(\Theta\)符号\(\Omicron\)符号描述函数的渐近上界......
  • pandas中的时间特征索引
    时间特征索引importpandasaspdfilepath=r"E:\Desktop\配套代码和数据集\配套代码和数据集\第3章:Pandas\Pandas代码\data\flowdata.csv"df=pd.read_csv(filepath,index_col=0,parse_dates=True)#以时间特征我索引df[pd.Timestamp("2012"):pd.Timestamp("2013"......
  • 将TDateTime值分解为小时、分钟、秒和毫秒,以及计算时间差
     将时间日期分解procedureTForm1.Button1Click(Sender:TObject);varPresent:TDateTime;Year,Month,Day,Hour,Min,Sec,MSec:Word;beginPresent:=Now;SysUtils.DecodeDate(Present,Year,Month,Day);Label1.Caption:='TodayisDay'+I......
  • EasyCVR平台如何正确配置设备移动侦测告警信息的上传?
    EasyCVR视频融合平台基于云边端协同架构,支持海量视频汇聚管理,平台融合性强、拓展灵活、视频能力丰富,具体包括:视频监控直播、轮播、录像、视频转码、云存储、检索与回看、告警上报、电子地图、云台控制、语音对讲、集群、级联共享等。用户在现场部署了EasyCVR,需要将设备的移动侦测告......
  • 直播平台源代码,js 时间戳转为日期格式
    直播平台源代码,js时间戳转为日期格式js把时间戳转为普通日记格式第一种 functiongetLocalTime(nS){     returnnewDate(parseInt(nS)*1000).toLocaleString().replace(/:\d{1,2}$/,'');   } ​第二种 functionadd0(m){returnm<10?'0'+m:m}func......
  • vue3 el-table-column 修改时间格式
    根据element文档说明,el-table中的el-table-column是可以使用formatter格式化时间的。  先添加绑定函数formatter <el-table-columnprop="createdTimeFormat":formatter="dateFormat"label="日期"width="170"></el-table-column> 新建格式......
  • 正确的使用HTTP代理
    HTTP代理对于网络爬虫是一种很常见的协议,HTTP代理协议也是大数据时代不可缺少的一部分。HTTP代理在网络爬虫中发挥出了他大量用途。HTTP代理其实有许多用途,例如:刷票,爬虫,抢单,刷单,等等一系列业务都适合HTTP代理。其实对于网络爬虫工作来着说,许多网络工作者都不知道如何使用HTTP代理......
  • C++-C11-chrono-获取当前时间、获取阶段时间
    C++-C11-chrono-获取当前时间、获取阶段时间Linux下使用C++11的chrono库获取时间。#include<chrono>#include<thread>#include<iostream>int64_tgetCurrentLocalTimeStamp(){std::chrono::time_point<std::chrono::system_clock,std::chrono::millisec......