我的一个文件名后面附有时间戳。该时间戳是使用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);
}
答案 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;