2012-01-26 3 views
0

배열의 각 월의 수를 계산하는 메소드를 생성하려고합니다. 내 배열에는 MM/dd/yyyy 형식의 날짜가 들어 있습니다. 배열에는 날짜와 시작 날짜가 포함될 수 있습니다. 날짜는 가장 오래된 것부터 가장 오래된 날짜 순이며 평일 만 포함됩니다.매월 계산 중

예를 들어 배열의 날짜가 2010 년 6 월 15 일에서 2010 년 1 월 15 일까지이면 jan = 1, feb = 1, mar = 1, apr = 1, may 일 수 있습니다. = 1, jun = 1, jul = 2, aug = 2, sep = 2, oct = 2, nov = 2, dec = 2

나는 누군가가 나에게 힌트를 줄 수 있기를 바랬다. 지금까지 : 그 일의

double[] months = new double[12]; 

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
Date date; 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); 
SimpleDateFormat yyyy = new SimpleDateFormat("yyyy"); 

for(int ii = 0 ; ii < array.length-length ; ii++){ 

     date = (Date)formatter.parse(array[ii][0]); 
     String currentDateMY = sdf.format(date); 
     String currentDateYYYY = yyyy.format(date); 

     date = (Date)formatter.parse(array[ii+1][0]); 
     String nextDateMY = sdf.format(date); 

      if (!currentDateMY.equals(nextDateMY)){ 

       date = (Date)formatter.parse(array[ii][0]); 
       sdf = new SimpleDateFormat("MM"); 
       String currentDateM = sdf.format(date); 

       if (currentDateM.equals("01")) months[0] = jan++; 
       if (currentDateM.equals("02")) months[1] = feb++; 
       if (currentDateM.equals("03")) months[2] = mar++; 
       if (currentDateM.equals("04")) months[3] = apr++; 
       if (currentDateM.equals("05")) months[4] = may++; 
       if (currentDateM.equals("06")) months[5] = jun++; 
       if (currentDateM.equals("07")) months[6] = jul++; 
       if (currentDateM.equals("08")) months[7] = aug++; 
       if (currentDateM.equals("09")) months[8] = sep++; 
       if (currentDateM.equals("10")) months[9] = oct++; 
       if (currentDateM.equals("11")) months[10] = nov++; 
       if (currentDateM.equals("12")) months[11] = dec++; 
      } 
} 
+4

어디서 붙어 있습니까? 이 숙제가 있니? – Frankie

+0

배열의 시작 날짜와 종료 날짜를 어떻게 알 수 있습니까? 다차원 배열입니까? –

+0

주말을 제외하고 날짜 사이에 간격이 있습니까? – dasblinkenlight

답변

1

뇌사 방법 :

  1. GregorianCale 만들기 시작 날짜와 종료 날짜가있는 ndar. (시작일 day_of_month에는 1을 입력하고 종료일에는 시작일 day_of_month에 GregorianCalendar.getActualMaximum(DAY_OF_MONTH) 입력)
  2. 시작일 (GregorianCalendar.add(MONTH, 1))에 한 달 추가하고 종료일이 after()인지 확인합니다. 그렇지 않으면 그 달 카운터를 증가시킵니다.
  3. 실제 시작 날짜의 day_of_month 구성 요소가 1이고 실제 종료 날짜 day_of_month가 GregorianCalendar.getActualMaximum(DAY_OF_MONTH) 인 경우 시작 및 끝마다 1을 더합니다.

시작일이 월요일이고 앞선 주말을 포함하려는 경우, 종료일 인 금요일과 마찬가지로 수표를 넣을 수 있습니다.

그 일을하는 똑똑한 방법 :

이 날짜 사이의 년의 차이를 가져옵니다. 실제로 차이가 클 경우 매월 2 차이로 증가시킵니다. 그런 다음 시작 달이 종료 달 전후인지 확인하고 그에 따라 그 달을 증가시킵니다. 위와 같이 시작 및 종료 월 자체가 포함되어 있는지 확인하십시오.

+0

예, 휠을 다시 발명 할 필요가 없도록 항상 이미 만들어진 클래스를 찾아야합니다. 특히 초보자를위한. – Jimmt