【发布时间】:2021-05-25 20:56:48
【问题描述】:
我知道这应该很简单,但我在互联网上找不到任何东西。
鉴于某些条件,我想在满足它们时获得下一个Date。例如,如果条件是minute = 01 和second = 30,而现在时间是15:58:00,则函数应该在今天返回16:01:30。我如何在 Java 中实现这一点?
我需要能够设置至少秒、分钟和小时的条件,但我希望能够将一个条件设置为任何值(如上面的示例,它没有指定小时)。
感谢和抱歉我的英语不好。
编辑: 我看到有些事情可能需要澄清:我想得到一个日期(或其他)总是在满足条件的当前时间之后。另外,这是一个 Minecraft Spigot 服务器,也许这些信息可以提供帮助。
【问题讨论】:
-
如果
Date你的意思是java.util.Date,我建议你不要上课。它设计得很糟糕,而且已经过时了。而是使用ZonedDateTime或java.time, the modern Java date and time API 中的另一个适当的类。 -
你真的用Java实现了cron的功能吗?已经有图书馆这样做了,所以你不需要重新发明轮子。
-
@OleV.V.我已经听说过 cron4j 库,这是我打算做的事情之一。但这仍然没有解决我想到的另一个项目:我想根据电子游戏的时间表制作一个火车“出发板”。该函数应返回火车出发的确切时间,即使时刻表仅显示“*:10:00”(在任何 10 点)。无论如何感谢您的建议。
-
@ArvindKumarAvinash 确切地说,我想得到第一次满足条件的时间在当前时间之后。
-
如果您将此检查
if (updated.isBefore(today)) { updated = updated.plusHours(1); }放在我的第二个解决方案中,您将得到2021-02-23T16:01:30。如果您认为它让您更近了一步,您应该进一步探索丰富的 java.time API。在我的回答中,我已经提供了 Oracle 精彩教程的链接。如果您需要任何进一步的说明,请随时发表评论。