我想从修改日期早于午夜的本地文件夹中检索所有文件:
LocalDateTime midnight = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT);
long timestamp = file.lastModified();
问题:现在我已经在java.time.LocalDateTime
开始了一天的工作,而且文件是' long
中的时间戳。我现在如何检查timestamp > midnight
?
答案 0 :(得分:0)
以下内容将LocalDateTime
转换为时间戳记长:
long millis = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
答案 1 :(得分:0)
据我了解您的问题,您想检查文件是否今天已被修改。以下代码可能比您自己的答案中的代码长一些,但我相信它更明确地表达了意图:
long timestamp = file.lastModified();
final ZoneId zone = ZoneId.of("Pacific/Nauru");
LocalDate fileModifiedDate = Instant.ofEpochMilli(timestamp)
.atZone(zone)
.toLocalDate();
LocalDate today = LocalDate.now(zone);
if (! fileModifiedDate.isBefore(today)) { // timestamp >= midnight
// do something
}
我故意不使用fileModifiedDate.equals(today)
,它更直接地表达“文件今天被修改”。文件修改时间可能会在未来人为设置,因此对于大多数用途,我们希望坚持>=
比较。你决定什么更适合你的目的。
如果您希望今天的日期在JVM的时区,那么在答案中使用ZoneId.systemDefault()
是正确的,您也可以在此处执行此操作。只需知道JVM的时区设置可以随时由程序的其他部分或在同一JVM中运行的其他程序进行更改。