2013-08-13 2 views
1

Android 프로젝트에서해야 할 일은 지난 3 개월 동안의 모든 화요일을 찾아서 문자열 배열에 넣는 것입니다. Calendar Class도 아니고 SimpleDateFormat도 작동하지 않는 것으로 보입니다.주어진 범위의 이전 화요일을 모두 찾으십니까?

예를 들어 오늘은 화요일이므로 오늘부터 시작하여 2013_8_13을 반환해야하며 그 다음 배열에서 2013_8_6, 2013_7_30 등이됩니다. Calendar Class 또는 SimpleDateFormat에 대한 설명이 잘못 되었습니까? 그렇다면 어떻게 할 수 있겠는가에 대한 아이디어를 줄 수 있습니까?

+1

오늘 날짜부터 시작하십시오. calendar.add (Calendar.DATE, 1); 화요일을 찾을 때까지. 찾으면 calendar.add (Calendar.DATE, -7); 3 달 동안 돌아갈 때까지. –

답변

1

EDIT : 정해진 일수가 아니라 특정 날짜로 되돌아가는 답변이 업데이트되었습니다. 문자열 배열을 ArrayList로 변경했습니다.

ArrayList<String> tuesdayArrayList = new ArrayList<String>(); 

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_M_d"); 

Calendar calendar = Calendar.getInstance(); 
int day = calendar.get(Calendar.DAY_OF_WEEK); 

Date date = new Date(); 

Date cutoffDate; 
int cutoffYear = 2013; 
int cutoffMonth = Calendar.JUNE; 
int cutoffDayOfMonth = 25; 
cutoffDate = new GregorianCalendar(cutoffYear, cutoffMonth, cutoffDayOfMonth).getTime(); 

while (day != Calendar.TUESDAY) { 
    calendar.add(Calendar.DATE, 1); 
    day = calendar.get(Calendar.DAY_OF_WEEK); 
} 

int i = 0; 
while (date.after(cutoffDate)) { 
    calendar.add(Calendar.DATE, -7); 
    int year = calendar.get(Calendar.YEAR); 
    int month = calendar.get(Calendar.MONTH); 
    int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); 
    date = new GregorianCalendar(year, month, dayOfMonth).getTime(); 
    tuesdayArrayList.add(dateFormat.format(date)); 
    Log.d("myTag: ", tuesdayArrayList.get(i)); 
    i++; 
} 
+0

와우, 아담 아주 멋지다! 이제해야 할 일은 내 목록 어댑터에 넣는 것뿐입니다. – kirktoon1882

+0

Adam, 당신의 솔루션은 훌륭하게 작동합니다! 특정 일 수 (-90)가 아니라 2013_6_25 특정 날짜로 돌아가도록 수정하는 방법이 있습니까? 그게 가능하니? – kirktoon1882

+0

아쉽게도 2013_6_25로 되돌아갑니다. 다시 한번 감사드립니다. – kirktoon1882

관련 문제