如何将 FTPClient 文件的最后修改与本地文件进行比较?

How to compare FTPClient File's last modification with a local file?

我有两个文件,一个在服务器上,一个在本地,我想获取这两个文件的最后修改,看看哪个更新。我做了一个方法,但我总是得到相同的结果。我尝试了每一面的测试,但 if 语句总是做出相同的决定。

这是我的代码:

public void SyncCheck(FTPClient ftpClient, String remoteFilePath, String savePath) throws IOException, ParseException{
        String time = ftpClient.getModificationTime(remoteFilePath);
        Date remoteFileDate = timeSplitter(time);
        Date LocalFileDate = new Date(new File(savePath).lastModified());

        if(remoteFileDate.after(LocalFileDate)){
            System.out.println("Remote File is newer: " + remoteFileDate);
        }
        else{
            System.out.println("nothing");
            System.out.println("Remote " + remoteFileDate);
            System.out.println("Local " + LocalFileDate);
        }
    }

    public Date timeSplitter(String time) throws ParseException{
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        String timePart = time.split(" ")[1];
        Date modificationTime = dateFormat.parse(timePart);
        return modificationTime;
}

结果总是这样:

nothing
Remote Fri Apr 03 02:20:30 BST 2015
Local Fri Apr 03 03:12:58 BST 2015

无论远程文件是新的还是旧的。我注意到的另一个是远程文件在 03:20:30 处被修改,但总是晚一个小时。与时区有关吗?

或者有什么想法可以比较一个服务器文件与本地文件的最后修改时间吗?

没有标准的方法可以知道ftp服务器时区,但你可以做的是上传一个文件,然后计算FTP报告的文件时间与本地的时差。这必须是一个方法 运行 作为程序的第一步,用于在您的每个客户端应用程序中初始化时区逻辑。