Java日历,将任务设置为定期

Java日历,将任务设置为定期,java,spring,spring-boot,spring-data,spring-data-jpa,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.n

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

}

根据我的理解,你是想让这更通用。然后,更好的选择是添加另一个参数,如
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);

根据我的理解,你是想让这更通用。然后,更好的选择是添加另一个参数,如
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);

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

您可以使用@Scheduled annotation计划任务。例如,

@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() {
  // ...
}

您可以根据需要定期或重复地安排任务。我相信您正在使用Spring Boot。使用Spring Boot,只需将@EnableScheduling注释添加到主应用程序类或任何其他配置类,即可启用调度

您可以使用@Scheduled annotation计划任务。例如,

@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() {
  // ...
}

您可以根据自己的需要定期或反复安排任务。

那么,是否可以将活动重新安排五次(五天)?@KabiraSuleman我已经帮助您概括了您的方法,现在,我不知道您的方法是什么以及如何工作的。现在,你可以为多个/相同的活动id多次调用你的方法,并设置不同的时间戳。那么,这会不会重新安排活动五次(五天)?@KabiraSuleman我已经帮助你概括了你的方法,现在,我不知道你的方法是什么以及如何工作的。现在,您可以为多个/相同的活动id多次调用您的方法,并设置不同的时间戳。对于时间线上的实际时刻,不要使用
LocalDateTime
,因为该类缺少时区或UTC偏移量的概念。您想要的是
Instant
,而是UTC时间线上的一个点。@KabiraSuleman您的问题解决了吗???如果是,则向上投票并接受下面的正确答案,否则让我们知道时间线上的实际时刻,不要使用
LocalDateTime
,因为该类缺少时区或UTC偏移的概念。您想要的是
Instant
,而是UTC时间线上的一个点。@KabiraSuleman您的问题解决了吗???如果是,请向上投票并接受下面的正确答案,否则请让我们知道谢谢你这么多我不知道这个注释谢谢你这么多我不知道这个注释