java - 获取满足Java条件的下一个日期
问题描述
我知道这应该很简单,但我在互联网上找不到任何东西。
给定一些条件,我想在Date
满足它们时得到下一个。例如,如果条件是minute = 01
andsecond = 30
现在时间是15:58:00
,则函数应该在今天返回16:01:30
。我怎样才能在 Java 中做到这一点?
我需要能够设置至少秒、分钟和小时的条件,但我希望能够将一个条件设置为任何值(如上面的示例,它没有指定一个小时)。
感谢并为我糟糕的英语感到抱歉。
编辑: 我看到有一些事情可能需要澄清:我想总是在满足条件的当前时间之后获得一个日期(或其他)。此外,这适用于 Minecraft Spigot 服务器,也许这些信息会有所帮助。
解决方案
您可以为此使用流:
Optional<LocalDateTime> firstMatch =
Stream.iterate(
LocalDateTime.now(),
ldt -> ldt.plusSeconds(1L))
.filter(
// Insert your condition here
ldt -> ldt.getSecond() == 0)
.findFirst();
这段代码所做的是获取电流LocalDateTime
并使用它来生成LocalDateTime
对象流(每次将时间提前 1 秒)。一旦遇到LocalDateTime
与提供的条件匹配的 a ,它就会返回此对象并终止流。
请记住,如果条件变为真需要一段时间,使用这种方法会生成大量对象,因此效率不高。
如果要去除纳秒,请替换LocalDateTime.now()
为LocalDateTime.now().withNano(0)
.
推荐阅读
- git - NetBeans 项目的哪些文件应该提交到存储库?
- javascript - 如何将javascript id数据显示到饼图(Highchart.js)中?
- c# - 如何使用 C# 跟踪 AWS 状态机中的作业状态?
- root-framework - 关闭画布后独立的 ROOT 应用程序不会终止
- flutter - 颤振填充到文本字段中的文本
- mongodb - 构建 MongoDB 索引以覆盖所有类型的查询的最佳方法
- javascript - 为什么解构参数对象会影响它的“this”值?
- javascript - 当我使用资产停用开发人员模式时,odoo 脚本不会
- javascript - 显示随机数 < 0.8 无法正常工作
- react-native - 更改使用 react native 开发的应用程序图标