我需要根据用户输入的时间和日期来安排任务。这些任务每周重复一次,并且根据复选框值,我需要将它们设置为在那些日子启用。
例如,现在是 UTC+2 第六号星期三 15:40。如果用户想在每周三 12:00 安排一个任务,我想获取 11 月 13 日 12:00 的时间(以毫秒为单位)。如果任务设置为每周三16:00,我想要今天的时间。计划在每周四运行的任务会产生明天的毫秒表示。所以,基本上是最近的日期即将到来。我如何在 Java 中实现这个?
最佳答案
已弃用的 Date.getDay()函数解释了如何使用日历来执行此操作。 (日期仍然有效,如果您确实想使用它,尽管已被弃用)。
Calendar.get(Calendar.DAY_OF_WEEK);
就流程而言,您将拥有一个类,用于将事件的星期几存储为 int 和时间。
然后,您将评估今天的日期和时间:
- 评估今天是否是一周中的指定日期。 如果是,检查时间是否已经过去。 如果还没有,请合理安排今天的时间。 如果有,请在日历日期上添加 7 天以获得预期日期。
- 否则,如果一周中的预定日期早于一周中的今天: 用 7 减去这两天的差。(即,如果目标日期是星期日 (0),而今天是星期三 (3),则 7 - (3 - 0) = 4,因此在今天的日期上加上 4 天即可得到目标日期)
- 如果是在之后,则只需计算两天之间的差值(即,如果目标日期是星期六 (6) 而今天是星期三 (3),则 6 - 3 = 3,因此在今天的日期上添加 3 天即可得到目标日期)。
您可能还需要检查夏令时。
关于java - 第二天 X 在 Y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19813708/