我有一个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));
答案 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
之间的差异。