尝试解析System.currentTimeMillis()

时间:2017-10-27 05:59:46

标签: java date time date-difference

我的一个文件名后面附有时间戳。该时间戳是使用System.currentTimeMillis()计算的。

现在我希望获得该文件的时间戳与当前系统时间之间的时差。我收到了这个错误:

  

无法解释的日期:" 1509083378768"

其中1509083378768实际上是附加文件名的时间戳。 以下是我的代码段:

 private void calculateTimeDifference(String fileTimeStamp){
    Date fileTimeStampDate ;

    SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
    long currentTime = System.currentTimeMillis();
    Date currentDate = new Date(currentTime);
    long timeDifference = 0 ;

    try {
        fileTimeStampDate = formatter.parse(fileTimeStamp);
        timeDifference = (currentDate.getTime() - fileTimeStampDate.getTime())/1000 ;

    } catch (ParseException e) {
        e.printStackTrace();
    }

    LOG.info("message='{}' {}", "Time Difference is", timeDifference);
}

1 个答案:

答案 0 :(得分:3)

new SimpleDateFormat("HH:mm:ss")可以解析类似10:15:25的字符串,这不是您的tinmestamp的格式,因此它无法正常工作。

您的时间戳是自纪元以来的毫秒数,您可以直接使用它来创建Date

Date fileTimeStampDate = new Date(Long.parseLong(fileTimeStamp));

此外,由于您使用getTime返回毫秒,我不确定为什么要使用日期。

所以你可以摆脱大部分代码,只需写下:

timeDifference = (currentTime - Long.parseLong(fileTimeStamp)) / 1000;