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

问题描述 投票:0回答:2

这是我目前用于重新安排活动的代码。工作正常: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);

}
java spring spring-boot spring-data spring-data-jpa
2个回答
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() {
  // ...
}

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


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);
© www.soinside.com 2019 - 2024. All rights reserved.