如何比较Java中的FileTime和LocalDateTime对象?
我希望将文件(Files.getLastModifiedTime(item))中的Files.getLastModifiedTime(item)对象与当前时间(LocalDateTime.now())进行比较。但它们不兼容。我怎么比较他们呢?
发布于 2018-05-18 13:46:16
您可以从FileTime获得即时信息,并使用该瞬间创建一个LocalDateTime对象。
示例
FileTime fileTime = Files.getLastModifiedTime(item);
LocalDateTime now = LocalDateTime.now();
LocalDateTime convertedFileTime = LocalDateTime.ofInstant(fileTime.toInstant(), ZoneId.systemDefault());现在您可以比较现在& convertedFileTime了。
记住,这没有考虑到可以改变的时区。
您也可以使用Instant。
发布于 2018-05-18 13:45:33
FileTime API旨在鼓励您使用Instant而不是LocalDateTime。
Instant now = Instant.now();
FileTime ft = Files.getLastModifiedTime(item);
if (ft.toInstant().isAfter(now)) { ... }请注意,在这种情况下,Instant比LocalDateTime更有意义,因为它代表了“在现实生活中”的唯一瞬间。而LocalDateTime可能是模棱两可的,例如在夏时制期间。
发布于 2018-05-18 13:55:44
我处理时间、日期、时区等问题时的做法.我通常将这些对象转换为Unix时间戳,然后执行所需的操作。
long lastModifiedFileTime = Files.getLastModifiedTime(item).toMillis()/1000;
long now = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC);这是可以做到的,但也许您应该考虑使用Instant而不是LocalDateTime,在处理时区(取决于您的需求ofc)时,事情会变得过于复杂。
long now = Instant.now().getEpochSecond();此外,还可以使用即时对象。
Instant now = Instant.now();
Instant lastModifiedFileTime = Files.getLastModifiedTime().toInstant();https://stackoverflow.com/questions/50412671
复制相似问题