首先linux服务器时间设置的是utc+8,在linux上看到的也是utc+8时间,
然后java后台利用FTPClient连接linux服务器,获取到文件的最后修改日期却是不是utc+8,而是utc!
查了些网上的资料,说的是检查tomcat或者配置linux之类的,没有解决问题。
自己调试打印发现FTPClient获取到的时间默认情况下会返回utc时间和时区差时间,于是从java后台出发,将返回的utc时间与传过来的时区差时间相加,得到真实时间,问题解决。
FTPClient f = new FTPClient();
f.connect(url,port);
f.login(username, password);
int reply = f.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
f.disconnect();
}
//设置编码
f.setControlEncoding("UTF-8");
f.setFileType(FTPClient.BINARY_FILE_TYPE);
//开通一个端口来传输数据
f.enterLocalPassiveMode();
//转换到要工作的目录
f.changeWorkingDirectory("/car/log");
FTPFile[] files = ftpClient.listFiles();
for (int i = 0; i < files.length; i++) {
//utc时间加上时间差
Long addTime = files[i].getTimestamp().getTime().getTimeInMiilis()+
files[i].getTimestamp().getTime().getZoneInfo().getOffset(0);
Date date = new Date(addTime);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(date );
System.out.println("时间: " + str);
}