Java日历,将任务设置为重复出现

时间:2017-12-31 15:52:20

标签: java spring spring-boot spring-data spring-data-jpa

以下是我目前用于重新安排活动的代码。工作正常:D。 这将基本上比当前时间提前24小时重新安排活动。

我希望定期进行活动(例如,每天重新安排活动的选项),如果可能的话,直到设定日期为止。

有人有任何建议吗?

@Override
public void rescheduleActivity(int id) {

    Activity activity = activityRepositoryJPA.findById(id);

    LocalDateTime date = LocalDateTime.now();
    Timestamp newDate = Timestamp.valueOf(date.plus(24, ChronoUnit.HOURS));

    activity.setStartDateTime(newDate);
    activityRepositoryJPA.saveAndFlush(activity);

}

2 个答案:

答案 0 :(得分:1)

根据我的理解,你试图让这更通用。然后,更好的选择是添加另一个参数Timestamp,其中包含您的活动的新Timestamp

public void rescheduleActivity(int id, Timestamp newDate) {

    Activity activity = activityRepositoryJPA.findById(id);

    LocalDateTime date = LocalDateTime.now();

    activity.setStartDateTime(newDate);
    activityRepositoryJPA.saveAndFlush(activity);

}

然后,把它叫做

Timestamp newDate = Timestamp.valueOf(date.plus(24, ChronoUnit.HOURS));
rescheduleActivity (5,newDate);

答案 1 :(得分:1)

我相信,你正在使用Spring Boot。使用Spring Boot,只需将@EnableScheduling注释添加到主应用程序类或任何其他配置类,即可启用调度。

您可以使用@Scheduled注释来安排任务。例如;

@Scheduled(fixedRate = 2000)
 public void scheduleTaskWithFixedRate() {
   // ...
}

@Scheduled(fixedDelay = 2000)
 public void scheduleTaskWithFixedDelay() {
   // ...
}

@Scheduled(fixedRate = 2000, initialDelay = 5000)
 public void scheduleTaskWithFixedRateAndInitialDelay() {
   // ...
}

@Scheduled(cron = "0 * * * * ?")
public void scheduleTaskWithCronExpression() {
  // ...
}

您可以根据需要定期或重复安排任务。