2017-11-04 2 views
0

"건너 뛰기"날짜 건너 뛰는 동안 내가 시작 및 끝 사이의 모든 날짜를 가져옵니다 일정 개체 배열을 만들려고합니다. 그래서 내가 날짜가 상상하자 2016년 3월 4일
건너 뛰기 =CalendarArray 두 날짜 사이의 날짜 가져 오기 및 몇 가지 건너 뛰기

시작 = 2016년 7월 21일
끝 = 2017년 2월 3일

내가 이런 식으로 뭔가를 시도했지만하지 않았다 그 잘 작동 :

public static Calendar[] getRange(Calendar start, Calendar skip, Calendar end){ 
    Calendar[] daysRange = new Calendar[100]; 
    Calendar placeholder = Calendar.getInstance(); 

    while(start.before(end)){ 
     if(placeholder.getTime() == skip.getTime()){ 
      continue; 
     } placeholder.add(Calendar.Date, 1); 
    } 
    //(pseudocode) 
    //add placeholder to daysRange 
    return daysRange; 
} 

나는 계속할 수있는 방법에 대한 조언을 부탁드립니다. 감사합니다.

+1

기존의'java.util.Calendar' 클래스를 사용하는 것에 대해 더 이상 강력하게 권고 할 수는 없습니다. 대신에 유스 케이스에 가장 적합한 클래스를위한'java.time' 패키지를 찾아야한다. –

+0

@JoeC이 말한 것의 두 번째 것입니다. '캘린더'를 사용하는 것이 '날짜'를 사용하는 것보다 더 나쁜 것입니다. 둘 다 피하십시오. 또한 현재 논리로 - 범위에서 100 일 이상이 경과하면 어떻게됩니까? 해당 범위에 부분적인 요일이 있으면 어떻게됩니까? –

+0

나는 당신이 맞다는 것을 알고있다. @JoeC하지만 문제는, 내가 시험하려고하는 시험이다. 나는 Calendar []를 돌려 줄 것으로 기대한다. –

답변

0

첫째 :

while (start.before(end)) { 

당신은 시작 또는 끝을 수정하지 않았다, 그래서 루프는 끝이 없다.

둘째 : 하나의 개체 틀 개체를 사용합니다. 즉, 전체 배열이 해당 개체를 가리키고 루프의 모든 단계마다 새 일정표를 만듭니다.

셋째 : 배열을 사용하지 말고 ArrayList를 사용하십시오.

관련 문제