如何在java中获取上次修改时间与当前sysdate时间差

时间:2019-01-11 19:18:42

标签: java

我有一个API代码,可在文本文件中写入令牌。我需要检查上次更新时间和当前系统。如果相差20分钟,它将生成一个新令牌。

问题是,当我使用以下代码时,我没有区别。如何在几分钟内以整数值获得这些差异?

java.nio.file.Path path = Paths.get("C://Users//xxx//token.txt");
attributes = Files.readAttributes(path, BasicFileAttributes.class);
System.out.println("Updated Time : " + attributes.lastModifiedTime());
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));

2 个答案:

答案 0 :(得分:1)

转换为Instant并使用Instant.isAfter()方法进行比较。不要转换为String,这仅在显示人类可以理解的时间时有用。

Path path = Paths.get("C://Users//xxx//token.txt");
BasicFileAttributes attributes = Files.readAttributes(path, BasicFileAttributes.class);
Instant deadline = Instant.now().minus(20, ChronoUnit.MINUTES);
boolean itsTime = attributes.lastModifiedTime().toInstant().isAfter(deadline);

答案 1 :(得分:0)

获得差异的一种方法是将FileTime映射到Instant,这将允许在两者之间创建Duration

import java.time._

path = Paths.get("C://Users//xxx//token.txt");
attributes = Files.readAttributes(path, BasicFileAttributes.class);
lastModifiedTime = attributes.lastModifiedTime().toInstant()
currentTime = Instant.now()

diffInMins = Duration.between(lastModifiedTime, currentTime).toMinutes()

toMinutes()上调用Duration会在几分钟内退还给定Instant之间的差异。