Linux Docker部署的项目中new Date与本地时间差8小时
问题描述:
本地测试自己的java代码,获取到的时间以及存入到数据库的时间都没有问题,但是Docker部署到服务器时获取到的时间却差了8小时,并且在Linux的命令行中输入#date返回的时间也没有问题,那么问题应该时出在new Date()上,这个方法默认获取的是系统时间,而服务器的系统时间因为时区设置等问题不一定是北京时间
解决方案:
经过一番百度,这里总结出两个只需要修改后台代码的方法
1、给SimpleDateFormat设置时区
SimpleDateFormat dateFormat= new SimpleDateFormat("HH:mm:ss MM月dd日 ");
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
Date date = new Date();
2、获取网络时间(其他服务器时间)
URL url=new URL("http://www.ntsc.ac.cn");
URLConnection uc=url.openConnection();
uc.connect();
long ld=uc.getDate();
SimpleDateFormat dateFormat= new SimpleDateFormat("HH:mm:ss MM月dd日 ");
Date date=new Date(ld);