2017-12-31 72 views
0

여기 활동을 일정 변경하는 데 현재 사용중인 코드가 있습니다. 그것은 잘 작동하고 있습니다 : 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); 

} 
+0

표준 시간대 또는 UTC 오프셋의 개념이 없으므로 타임 라인에서 실제로는 LocalDateTime을 사용하지 마십시오. UTC로 타임 라인상의 한 지점 인'인스턴트 (instant) '를 원한다. –

+0

@ KabiraSuleman 문제가 해결 되었습니까 ??? 예, 그렇다면 upvote하고 아래에서 정답을 받아들이십시오. 저희에게 – Ravi

답변

1

난 당신이 봄 부팅을 사용하고, 생각 호출합니다. 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() { 
    // ... 
} 

필요에 따라 주기적으로 또는 반복적으로 작업을 예약 할 수있는 유연성이 뛰어납니다.

+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); 
+0

을 알려주십시오. 그러면 5 일 동안 5 번 활동을 다시 스케줄 하시겠습니까? –

+0

도 감사합니다. D –

+0

@KabiraSuleman 나는 당신의 방법을 일반화하는데 도움을주었습니다. 지금, 나는 당신의 방법이 무엇이고 어떻게 작동하는지 모르겠습니다. 지금은 다중/동일 활동 ID에 대해 메소드를 여러 x 호출하고 다른 시간 소인을 설정할 수 있습니다. – Ravi