【时区】java项目new date()时间和服务器时间(数据库)不一致

造成这种问题的原因可能是:你的操作系统时区跟你JVM的时区不一致。

你的操作系统应该是中国的时区吧,而JVM的时区不一定是中国时区,你在应用服务器的Java虚拟机添加如下配置:  -Dfile.encoding=UTF8     -Duser.timezone=GMT+08

在一个精简的Linux安装上jre,发现所有的java程序获取的时间都不是系统时间。后来发现原来是时区不对。java程序获取的时间都是GMT时间,而系统是北京时间,应该是GMT+8,刚好相差8小时。网上搜了好多资料,只有两种方法:

1、在程序中使用java的函数设定时区。

2、在启动java程序时加参数-Duser.timezone=GMT+8

不过总不能去修改每个程序的源码去设定时区吧。也不想在每个java程序启动的时候加参数,太麻烦了。就没有一劳永逸的办法了?

开始以为jre应该会有某个配置文件保存了时区的配置,结果一无所获。不过总有jre总要去系统中获取时区配置吧。于是开始想是不是java用的是 linux中的系统配置文件?于是到linux系统下/etc/sysconfig目录看时区配置。发现缺少了clock这个用于设置时区的文件。把别的 linux系统中的这个文件拷过来一试,ok。java程序的时间和系统时间一致了。看来jre是从/etc/sysconfig/clock这个文件中 获取时区信息的。

附clock文件内容:

ZONE="Asia/Shanghai"
UTC=false
ARC=false

ZONE -- 时区
UTC  -- 表明时钟设置为UTC。 
ARC  -- 仅用于alpha表明使用ARC。

以上转载自:https://www.cnblogs.com/konghou/p/4118770.html

按照上面的步骤更改后仍然没有解决问题

查询服务器时间

1、date

2、hwclock

3、hwclock --localtime

hwclock --localtime  硬件时钟真正的时间,经测试项目实际使用的时间。

修改hwclock --localtime

一、使用命令与互联网时间同步,然后再写入硬件(也就是CMOS)
ntp服务器同步时间
代码:
sudo ntpdate cn.pool.ntp.org
将调整后的时间写入cmos
代码:
sudo hwclock --systohc
二、这一种方法与第一种有异曲同工的效果,只是不用与ntp服务器同步
设置系统当前时间
#date -s ‘2008-6-8 09:19:00‘
#date -s ‘09:19:00‘
#date -s ‘09:19‘
写入硬件
#hwclock -w --localtime

原文地址:https://www.cnblogs.com/rookiejava/p/10758589.html

时间: 2024-08-01 20:39:22

【时区】java项目new date()时间和服务器时间(数据库)不一致的相关文章

Java 项目热部署,节省构建时间的正确姿势

上周末,帮杨小邪(我的大学室友)远程调试项目.SpringBoot 构建,没有热部署,改一下就得重启相关模块.小小的 bug ,搞了我一个多小时,大部分时间都还在构建上(特么,下次得收钱才行).我跟他说有个热部署插件叫 Jrebel,可以热部署,每次修改完代码需要测试的时候,只要 Build 一下就行?所有 Java 项目都能使用,他居然不知道.作为一个英俊男孩,我不得不写下这篇文章教他使用热部署. Jrebel 是什么? JRebel 是一款 JAVA 虚拟机插件,它使得 JAVA 程序员能在

IIS 7 出现日志文件时间与服务器时间不符

最近在分析web日志,发现IIS7日志中时间与系统时间不一致,即本该上班时间才产生 的产并发访问日志,全部发生在凌晨至上班前. 本以为是系统时间设置错误,检查后一切正常.后查询资料,原来是这个原因: 日志的格式有IIS.NCSA.W3C三种: 1.IIS是固定的基于 ASCII 文本的格式,无法自定义记录的字段,字段由逗号分隔, 记录的时间为本地时间文件名前缀为u_in. 2.NCSA是美国国家超级计算技术应用中心 (NCSA) 公用日志文件格式,也是固定的基 于 ASCII 文本的格式,无法自

AD域中客户端时间与服务器时间不同步的解决办法

公司考勤用的是国内一家OA软件里的考勤模块,个人在电脑上在规定时间内登记的形式,客户端都是采取域用户登录的形式,电脑客户端的时间显示比OA登记的时间晚两分钟,[注:OA服务器上安装有时间校正软件iTimeSync,确保OA服务器时间一直保持与标准时间一致],其次每次电脑客户端慢两分钟,大家就晚两分钟下班,久而久之大家发现电脑时间老是与手机的时间慢两分钟就不高兴了, 信息反馈到了信息中心,要求信息中心把大家的时间调整一致,因为域用户无法修改时间,即使你修改后重启电脑后时间又与AD同步了. 域中的计

11G_RAC数据库时间与服务器时间相差16小时

解决命令: srvctl setenv database -d <dbname> -t TZ=EAT-8 看起来容易理解,差了16小时,可能是时区不对 sysdate是调用操作系统里面的gettimeofday函数,不依赖oracle数据库设置的时区,用的是操作系统的时区,而对linux来说,就是环境变量里设置的时区 cat /etc/sysconfig/clock

java项目开发第五天——奋力完成数据库

又一次成功地避开了UI界面,看来以后在这个部分得残了,无奈,心塞,不知为何.今天人品不好,大清早在群里签到居然和机器人聊起来了,顿时感觉智商被碾压,还下载了一个QQ空间背景复制器,看了看果真是实现了,顿时感觉平时最信任的东西顿时就倒塌了,还是以后好好的研究研究,不然着实是太……心塞了. http://blog.sina.com.cn/s/blog_6ad32c040100m5ei.html 这个部分是详细的讲解了对时间部分的处理.

Java Web项目部署到阿里云服务器(ECS)

本篇随笔只是记录博主第一次将自己的Java项目部署到阿里云服务器的大致过程,具体细节还请参考别的博文. 一.项目介绍 我做的项目是利用maven项目构建工具进行搭建基于SSM框架的代码共享管理系统,主要功能是发布相关博文,对博文进行CRUD操作...所以说也算是个入门的SSM项目. 二.域名以及ECS 由于想要将自己的项目发布到公网上,所以首先想到的是去购买一个域名,于是到了阿里云计算官网上购买了万网的域名,过程比较简单:首先注册阿里云账号并进行相关的实名认证,在控制台中的信息模板进行实名认证,

2、CRM2011编程实战——设置窗体某一项的值为服务器时间

需求:设置窗体中某个控件的值为服务器时间. 解决方案:通过一个一般处理程序获取服务器时间,然后通过ajax形式获取到此服务器时间并赋值给界面控件. 1.新建一个一般处理程序GetSererTimeHandler.ashx, 代码如下: <%@ WebHandler Language="C#" Class="GetSererTimeHandler" %> using System; using System.Web; namespace IsWaterWe

Spring Boot框架开发的Java项目在CentOS7上的部署

需求:上级拿来一份Spring Boot框架开发的Java项目代码让我在服务器上运行起来,只说了一句该框架是自带了Tomcat(不用重新安装Tomcat),一份代码下有两个项目(一个管理端项目,一个用户端项目,等会会细说).我是一名运维,在上家公司只接触过在Tomcat下部署Java项目,自带Tomcat的没接触过,目前这个公司都是php软件攻城狮,所以只能靠自己了.幸好在一个学习交流群里碰到一位Java软件攻城狮,在该攻城狮的热心指导下项目成功运行.下面是详细步骤,知识点扩展及总结将在最后写出

javascript小技巧:同步服务器时间、同步倒计时

之前在网上看到有人提问,如何在页面上同步显示服务器的时间,其实实现方法有几种,可能一般人立马就想到可以使用Ajax每隔一秒去请求服务器,然后将服务器获取到时间显示在页面上,这样虽然能够实现,但存在一个很大的问题,那就是每隔一秒去请求服务器,这样如果用户多了,服务器就会崩溃(内存占用率会很大),所以在我看来,这种方法不可行,我这里给出一种解决方案,能够实现同步服务器时间.同步倒计时,却不占用服务器太多资源,下面我给写实现的思路 第一步,当用户第一次浏览页面时,服务器首先获取当前时间并显示在页面上(