java - 如何向我已有的时间戳添加分钟?

标签 java timestamp last-modified minute

我搜索了很多,但我找到了一种从给出当前时间的日历实例中添加或减去时间的方法。如何从给定文件的上次修改时间中减去时间?

更新: 我一直在使用Java1.4。这就是我无法找到任何方法来做到这一点的原因。 我将修改日期提取为字符串。我想将此字符串转换为日历对象,以便我更容易将日历对象的 add() 应用于时间。我也遇到过同样的问题。这种做法正确吗?您能帮忙吗

最佳答案

NIO 和 java.time

    Path filePath = Paths.get("myFile.txt");
    Duration timeToSubtract = Duration.ofMinutes(7);

    FileTime lastModified = Files.getLastModifiedTime(filePath);
    Instant lastModifiedInstant = lastModified.toInstant();
    Instant timeBeforeLastModified = lastModifiedInstant.minus(timeToSubtract);
    System.out.println("Time after subtraction is " + timeBeforeLastModified);

刚刚在我的计算机上运行,​​我得到了以下输出:

Time after subtraction is 2017-02-18T03:06:04Z

末尾的 Z 表示 UTCInstant::toString (将 Instant 附加到字符串时隐式调用)始终生成 UTC 格式的字符串。

我正在使用现代的 Java NIO APIjava.time ,现代 Java 日期和时间 API。 NIO给我们一个FileTime在本例中表示文件上次修改的时间。为了进行时间数学计算,我首先将其转换为 Instant ,它是java.time的中心类。 Instantminus 方法减去 Duration ,一段时间,并返回一个新的 Instant 对象。

不要使用日历。该类设计得很糟糕并且早已过时。

链接: Oracle tutorial: Date Time解释如何使用 java.time。

关于java - 如何向我已有的时间戳添加分钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55100424/

相关文章:

java - 我如何判断文件(从保管箱网页读取)是否已在Java中被更改?

java - 使用 Streams 的 JsonArray 循环

java - 无法从cgi运行java命令

java - javafx 中的碰撞检测器(二维迷宫)

android - Flutter 有没有办法制作一个动态时间戳,打印出 10 分钟前、1 小时前或 2 个月前的内容

caching - 如何使用 must-revalidate 缓存 HTML 页面?

java - 在 64 位 Windows 上找不到 PKCS#11 库

cassandra - 如何将 CQL 时间戳配置为 %d-%m-%Y %H :%M:%S%z

ios - 根据 iPhone 设置将时间转换为字符串格式 (13 :00 vs 1:00PM) in Swift

java - 如何在 Java 的目录中找到最后修改的文件?