【Java】new Date()的取值
问题描述
springboot服务部署到服务之后,运行代码(时间部分用new Date() 取系统当前时间),结果在数据库中的字段值不是当前时间
原因分析
首先想到的是不是服务器时间设置错误,用date命令查看后,是当前时间;
其次分析数据库存的时间和当前时间差14个小时左右,即比当前时间慢14个,即我们现在今天,存储的日期有可能是前一天。
解决方法
考虑是失去的问题
;
date +%Z命令
所以用命令date +%Z去查服务器设置的时区,结果是CST。经过百度,美国时区的UTC6确实是比中国慢14小时,哦哦哦~~~
那么什么是CST呢?
CST可视为美国、澳大利亚、古巴或中国的标准时间。
CST可以为如下4个不同的时区的缩写:
美国中部时间:Central Standard Time (USA) UT-6:00
澳大利亚中部时间:Central Standard Time (Australia) UT+9:30
中国标准时间:China Standard Time UT+8:00
古巴标准时间:Cuba Standard Time UT-4:00
还是看不出来啊!!!
timedatectl命令
再用timedatectl命令查询
看不出来在哪里差14小时!!!
date -u 命令
再用date -u +"%Y-%m-%d %H:%M:%S" 命令
这里有一些端倪了,网上说date -u命令查看的是UTC+6的时间,那么相差的8,再加上6,正好等于14。
后续还要继续跟踪!!!