linux 查看tomcat时区,项目系统时区问题
Spring时区转换问题
spring转json的默认实现jackson中会根据时区去转换时间,而jackson的默认时区跟国内是相差8小时的。
解决方法:
重新设置当前项目地所在时区。使用注解的方法。
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
Javascript时区转换问题
方法一:
/**
* 日期转换
* @param datetime
* @param fmt
* @returns {*}
* @constructor
*/
function Format(datetime,fmt) {
if (parseInt(datetime)==datetime) {
if (datetime.length==10) {
datetime=parseInt(datetime)*1000;
} else if(datetime.length==13) {
datetime=parseInt(datetime);
}
}
datetime=new Date(datetime);
var o = {
"M+" : datetime.getMonth()+1, //月份
"d+" : datetime.getDate(), //日
"h+" : datetime.getHours(), //小时
"m+" : datetime.getMinutes(), //分
"s+" : datetime.getSeconds(), //秒
"q+" : Math.floor((datetime.getMonth()+3)/3), //季度
"S" : datetime.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (datetime.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;
}
方法二:
function setTime(datetime,i) {
//参数i为时区值数字,比如北京为东八区则输进8,西5输入-5
if (typeof i !== 'number') return;
var d = new Date(datetime);
console.log('d:'+ d);
//得到1970年一月一日到现在的秒数
var len = d.getTime();
//本地时间与GMT时间的时间偏移差
var offset = d.getTimezoneOffset() * 60000;
//得到现在的格林尼治时间
var utcTime = len + offset;
return new Date(utcTime + 3600000 * i);
}
方法三:
function dateToGMT(strDate){
var dateStr=strDate.split(" ");
var strGMT = dateStr[0]+" "+dateStr[1]+" "+dateStr[2]+" "+dateStr[5]+" "+dateStr[3]+" GMT+0800";
var date = new Date(Date.parse(strGMT));
return date;
}
docker部署完系统后,时区问题排查
1、首先排查Linux系统时间
利用date命令
[root@oracle-131 bytd]# date
Tue Apr 21 17:30:24 CST 2020
[root@oracle-131 bytd]#
2、docker容器的时区
进入宿主机查看容器 docker ps
进入容器 docker exec -it “容器名“ /bin/bash
查询时间 date -R 发现时区为0时区
Tue, 21 Apr 2020 07:23:05 +0000
解决办法:
(1)、复制相应的时区文件,替换系统时区文件;
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
有的容器基础镜像是有这个文件的,直接拷贝就可以,如果不能拷贝,则是因为创建镜像时依赖的基础镜像 运行的容器没有这两个文件,使用下面的办法
(2)、创建文件夹
mkdir -p /usr/share/zoneinfo/Asia
(3)、回到宿主机,复制宿主机里的文件到容器中
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID或容器名:/usr/share/zoneinfo/Asia
(4)、进入容器
docker exec -it 容器Id或容器名 bash
执行命令 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
(5)、验证date
bash-5.0# date
Tue Sep 17 13:54:25 CST 2019
3、继续排查数据源时间
如果是MySQL:直接在链接后面加上 &useTimezone=true&serverTimezone=GMT%2B8
Oracle时间相关数据类型
序号
数据类型
说明
使用选择
1
DATE
存储日期和时间信息,精确到秒
所占字节最少,最节省空间
2
TIMSTAMP
DATE类型的扩展,保留小数级别的秒,默认为小数点后6位
所占字节比DATE要多,但比其他两个数据类型少
3
TIMESTAMP WITH TIME ZONE
存储带时区信息的TIMESTAMP
需要保存时区/地区信息的时候使用
4
TIMESTAMP WITH LOCAL TIME ZONE
和TIMESTAMP WITH TIME ZONE类型的区别:不会保存原时间的时区信息,而是把时间转换为基于数据库时区(database timezone)的时间后存入数据库
谨慎使用,不关心操作发生的具体地点,而只关心操作是在当前时区的几点发生
如果是Oracle:
【DATE】
设置格式:
SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
查询系统时间:
SQL> select sysdate from dual;
【TIMESTAMP】
设置格式:
SQL> ALTER SESSION SET NLS_TIMESTAMP_FORMAT='DD-MON-YY HH:MI:SSXFF';
查询数据库所在系统时间:
SQL> select localtimestamp from dual;
【TIMESTAMP WITH TIME ZONE】
设置格式:
SQL> ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT='DD-MON-RR HH:MI:SSXFF AM TZR';
查询数据库所在系统时间(带时区):
SQL> select systimestamp from dual;
【TIMESTAMP WITH LOCAL TIME ZONE】
设置数据库时区(东8区),需要重启数据库才会生效:
SQL> ALTER SESSION SET TIME_ZONE='+08:00';
查询数据库时区:
SQL> select dbtimezone from dual;
查看数据库时区和会话时区
SQL> select dbtimezone,systimestamp from dual;
修改数据时区
SQL> alter database set time_zone='+8:00';
可能会有以下报错:
ORA-30079: cannot alter database timezone when database has TIMESTAMP WITH LOCAL TIME ZONE columns
从错误提示可以看出数据库中某些字段的数据类型为:TIMESTAMP WITH LOCAL TIME ZONE,只有将这些列删除之后,才能更改。
更改完时区之后需要重启数据库
SQL> shutdown immediate;
SQL> startup;
更新之后,重新查询数据库时区
SQL> select dbtimezone from dual;
4、排查JDK1.8(Tomcat)时区
可通过查看tomcat日志。
(1)如果日志时间正确,故排除tomcat时区问题。
(2)如果日志时间不正确,则修改tomcat时区.
编辑tomcat/bin目录下的 catalina.sh 或 catalina.bat ,添加JAVA_OPTS参数
JAVA_OPTS="$JAVA_OPTS -Duser.timezone=GMT+08"
保存,重启Tomcat使配置生效,即可设置为东八区时区
linux 查看tomcat时区,项目系统时区问题相关推荐
- 【Linux查看tomcat版本】
[Linux查看tomcat版本] 一.不同的tomcat查看版本可能不同,例如有的直接执行./version.sh就可以,其他就没有:一般来说,在tomcat启动时就会有版本信息,如: 信息: In ...
- linux查看和修改当前系统时间
一.查看和修改Linux的时区 1. 查看当前时区 命令 : "date -R" 2. 修改设置Linux服务器时区 方法 A 命令 : "tzselect" ...
- linux查看tomcat启动内存溢出,关于tomcat乱码以及tomcat jvm 内存溢出问题的解决方案和理论-Fun言...
一:乱码问题1(前端通过url方式传递中文参数后台收到的是????) 此为Tomcat根目录-conif-server.xml 中 connectionTimeout="20000″ red ...
- linux查看tomcat在,在陌生Linux环境查看Tomcat服务的方法
1.查看Tomcat进程linux 执行命令$ps -ef|grep tomcat 你就能找出tomcat占据的进程号,固然这要求tomcat启动了.正则表达式 # ps -ef | grep tom ...
- 华为交换机配置时区_S5700系统时区不同于UTC时区导致NTP同步失败
1.查看配置信息:ntp-service unicast-server 10.0.0.17 ,配置正确: 2.通过display clock查看当前时间: dis clock 2015-02-03 0 ...
- Linux查看tomcat日志
一.相关日志介绍 Tomcat 日志分为下面5类: catalina : 相当命令行输出日志 localhost: 相当于localhost主机的命令行输出日志 manager: 管理的日志 adm ...
- linux查看tomcat 控制台,linux 下查看Tomcat的状态,以及开启停止服务命令
1.首先进入你的tomcat 的bin目录下 cd /你的安装目录/tomcat/bin 查看服务启动情况 ps -ef|grep java 此条命令具体含义 ps:将某个进程显示出来 -A 显示所有 ...
- Linux查看tomcat服务进程号,linux如何查看tomcat进程_网站服务器运行维护
linux查看端口命令是什么_网站服务器运行维护 linux查看端口命令有两种,分别是"lsof -i:"和"netstat -nltp | grep",其中参 ...
- linux tomcat文件夹,linux 查看tomcat 在哪个文件夹
1.安装tomcat 1).下载tomcat 从官网http://tomcat.apache.org/下载tomcat,保存在/home目录下. root@ubuntu:/home/ubuntu/Do ...
最新文章
- docker centos 无法用systemctl 启动服务的问题
- 关于“INS-40922 Invalid Scan Name – Unresolvable to IP address”
- 【响应式Web前端设计】css中:overflow:hidden解决塌陷
- python分解word文档为多个_将一个word文档按一页或多页拆分成多个文档
- Elastic Nodes Example 翻译及学习整理
- 如何真正提高ASP.NET网站的性能
- java linux 字体设置_Linux操作系统JDK中文字体设置方法介绍
- Linux: mv, rename单次及批次修改档案名称及后缀(批量修改文件名)
- UE3 后期处理编辑器用户指南
- 电商垄断的形式不是对某一行业的具体垄断
- qt将tablewidget导出为excel
- pip可识别的requirements.txt的写法
- 计算机禁止安装游戏软件,win10禁止安装,手把手教你win10如何设置禁止安装软件...
- 强网杯2022 crypto 复现
- bootstrap搜索图标的使用
- 【Python】24点 一行代码解决
- 网速由100M变成10M的原因与解决方法
- 怎么用c语言让电脑定时开关机,台式电脑定时开机怎么设置(怎么让电脑定时开机开关机)...
- matlab 实现信号的微分和积分
- 简单概括 文明进化的各个阶段 (39)