鉴于Path
,我想根据上次修改时间确定文件的年龄。我知道如何获得最后修改时间:
FileTime t = Files.getLastModifiedTime(path);
我也知道如何通过以下方式获取当前日期/时间:
LocalDate now = LocalDate.now();
然而,我没有看到两者之间有任何联系。我想我必须从一种类型转换为另一种类型,然后以天计算差异,但此时我仍然坚持阅读文档。任何帮助将不胜感激。
答案 0 :(得分:9)
我不会使用LocalDate.now()
- 这取决于您当前的时区。 已过去时间的文件年龄可以按时区中立方式计算。
相反,通过FileTime
将Instant
转换为toInstant
,然后您就可以找到持续时间:
Instant fileInstant = t.toInstant();
Instant now = clock.instant(); // Where clock is a java.time.Clock, for testability
Duration difference = Duration.between(fileInstant, now);
long days = difference.toDays();
答案 1 :(得分:2)
您可以在toMillis()
中使用FileTime
方法:
long ft = t.toMillis();
long now = System.currentTimeMillis();
long diff = ft - now; // diff in milliseconds