【问题标题】:How to compare LocalDateTime to lastModified timestamp of a file?如何将 LocalDateTime 与文件的 lastModified 时间戳进行比较?
【发布时间】:2018-03-08 08:43:13
【问题描述】:

我想从本地文件夹中检索修改日期早于午夜的所有文件:

LocalDateTime midnight = LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT);
long timestamp = file.lastModified();

问题:现在我在java.time.LocalDateTime 中有一天的开始,在long 中有文件的时间戳。我现在如何检查timestamp > midnight

【问题讨论】:

    标签: java java-time


    【解决方案1】:

    以下将LocalDateTime 转换为时间戳长:

    long millis = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    

    【讨论】:

      【解决方案2】:

      据我了解您的问题,您想检查文件今天是否被修改。以下代码可能比您自己的答案中的代码长一点,但我相信它更清楚地表达了意图:

          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 中运行的其他程序更改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        • 1970-01-01
        • 2017-07-02
        • 1970-01-01
        • 1970-01-01
        • 2011-02-02
        • 2018-04-11
        相关资源
        最近更新 更多