首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较FileTime和LocalDateTime

比较FileTime和LocalDateTime
EN

Stack Overflow用户
提问于 2018-05-18 13:41:17
回答 4查看 8.7K关注 0票数 11

如何比较Java中的FileTimeLocalDateTime对象?

我希望将文件(Files.getLastModifiedTime(item))中的Files.getLastModifiedTime(item)对象与当前时间(LocalDateTime.now())进行比较。但它们不兼容。我怎么比较他们呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-05-18 13:46:16

您可以从FileTime获得即时信息,并使用该瞬间创建一个LocalDateTime对象。

示例

代码语言:javascript
复制
FileTime fileTime = Files.getLastModifiedTime(item);
LocalDateTime now = LocalDateTime.now();
LocalDateTime convertedFileTime = LocalDateTime.ofInstant(fileTime.toInstant(), ZoneId.systemDefault());

现在您可以比较现在& convertedFileTime了。

记住,这没有考虑到可以改变的时区。

您也可以使用Instant

票数 18
EN

Stack Overflow用户

发布于 2018-05-18 13:45:33

FileTime API旨在鼓励您使用Instant而不是LocalDateTime

代码语言:javascript
复制
Instant now = Instant.now();
FileTime ft = Files.getLastModifiedTime(item);

if (ft.toInstant().isAfter(now)) { ... }

请注意,在这种情况下,InstantLocalDateTime更有意义,因为它代表了“在现实生活中”的唯一瞬间。而LocalDateTime可能是模棱两可的,例如在夏时制期间。

票数 9
EN

Stack Overflow用户

发布于 2018-05-18 13:55:44

我处理时间、日期、时区等问题时的做法.我通常将这些对象转换为Unix时间戳,然后执行所需的操作。

代码语言:javascript
复制
long lastModifiedFileTime = Files.getLastModifiedTime(item).toMillis()/1000;
long now = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC);

这是可以做到的,但也许您应该考虑使用Instant而不是LocalDateTime,在处理时区(取决于您的需求ofc)时,事情会变得过于复杂。

代码语言:javascript
复制
long now = Instant.now().getEpochSecond();

此外,还可以使用即时对象。

代码语言:javascript
复制
Instant now = Instant.now();
Instant lastModifiedFileTime = Files.getLastModifiedTime().toInstant();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50412671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档