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/

相关文章:

Python UTC 日期时间对象的 ISO 格式不包括 Z(祖鲁语或零偏移)

php - 仅加载数据库中的新行

python - 如何不爬取如果和之前在scrapy框架中爬取数据一样

从 FTP 服务器检索文件的修改日期时间

java - 使用 MySQL 从 Java 中的多个表中选择带前缀的列

java - 如何为不同的 Java 版本(6、7、8)支持不同版本的主要(和测试)源代码集

java - 查询时java上的Scape %

java - 在JavaFX中将二维数组显示为网格

MySQL触发器在插入后删除旧行

postgresql - 如何列出最近24小时内数据变化的所有表?