2014-01-30 3 views
0

예 : 주어진 월 = 2이고 Year = 2014를 주면 다음 코드를 사용하여 주 목록을 얻었습니다. 왜 내가 1 개월 동안 1 개월 동안 적용 했는가?WEEK_OF_YEAR 안의 날짜 목록을 android에 가져 오는 방법은 무엇입니까?

에 SampleCode :

Calendar calendar = Calendar.getInstance(); 
calendar.set(1, 2014); 
calendar.set(2014, 1, 1); 
int ndays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); 
Set<Integer> weeks = new HashSet<Integer>(); 
for (int i = 1; i <= ndays; i++) { 
weeks.add(calendar.get(Calendar.WEEK_OF_YEAR)); 
calendar.add(Calendar.DATE, 1); 
} 

결과 : 주> [8, 9, 5, 6, 7]

내가 얻을 수있는 방법이 결과를받은 후 날짜는 무엇인가 = weekofyear에서 사용할 수 있습니다. 2014 년 2 월 5 일, 1 일 (토요일) 만 있습니다. 나머지 주에는 마지막 9 주를 제외하고 세븐데이가 있습니다.

week5 => 1-saturday 
week6 => 2-sunday 
     3-monday 
     4-tuesday 
     5-wednesday 
     6-thursday 
     7-friday 
     8-saturday 
week7 => 9-sunday 
. 
. 
. 
. 
week9 => 23-sunday 
     24-monday 
     25-tuesday 
     26-wednesday 
     27-thursday 
     28-friday 
     29-saturday 

어떤 하나>이 목록 < 키, datelist를 얻을 수 나를 인도 위의 결과처럼 쌍 :

나는 형식을 예상.

답변

0

왜 처음에는 주를 수집 한 다음 요일을 찾고 싶습니까? 한 달 내내 이미 반복 작업 중이므로 주를 키로하고 날짜 목록을 값으로 갖는지도를 만들면됩니다. 어떻게 든 그런

:

Calendar calendar = Calendar.getInstance(); 
    calendar.set(1, 2014); 
    calendar.set(2014, 1, 1); 
    int ndays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); 
    Map<Integer, List<Integer>> map = new TreeMap<Integer, List<Integer>>(); 
    for (int i = 1; i <= ndays; i++) { 
     int week = calendar.get(Calendar.WEEK_OF_YEAR); 
     int day = calendar.get(Calendar.DAY_OF_MONTH); 
     List<Integer> dayList = map.get(week); 
     if (dayList == null) { 
      dayList = new ArrayList<Integer>(); 
      map.put(week, dayList); 
     } 
     dayList.add(day); 
     calendar.add(Calendar.DATE, 1); 
    } 
    //Check the result: 
    for (Map.Entry<Integer, List<Integer>> entry : map.entrySet()) { 
     System.out.println("Week: " + entry.getKey()); 
     for (int day : entry.getValue()) { 
      System.out.println("Day: " + day); 
     } 
    }