2011-09-01 2 views
4

날짜에서 반환 된 "week of year"의 숫자가 잘못되었습니다. Android에서 "week of year"가 잘못 입력되었습니다.

내 코드입니다 :

Calendar c = Calendar.getInstance(); 
c.setTime(my_date); 
int num_week = c.get(Calendar.WEEK_OF_YEAR); 

my_date (Date 형)이 01/01/2011 인 경우에, 나는 "올해의 주"1이라고 가정하지만 52

I를 반환 이러한 방법으로 테스트하려고하지만 난 아무것도 얻을하지 않습니다 : 그것은 흥미로운 경우

c.setFirstDayOfWeek(6); 
c.setMinimalDaysInFirstWeek(1) 

, 나는 스페인에서 왔어요, 우리 주 월요일에 시작합니다.

올바른 결과를 얻으려면 무엇인가해야합니까?

감사합니다.

+0

가능한 복제본 [2010 년 12 월 31 일을 반환하는 이유는 무엇입니까?] (http://stackoverflow.com/questions/4608470/why-dec-31-2010-returns-1-as-week-of- 년) –

+0

첫해와 마지막 주는 로케일에 따라 다릅니다. 중복 질문 및 설명은 위 링크를 참조하십시오. –

+0

@Metro :하지만 첫 주 최소 일수를 1 *로 설정하면 관계없이 수정해야합니다. –

답변

3

Android/하모니에만 해당 될 수 있습니다. 예를 들어, 데스크탑 자바 나를 위해 작동합니다 : 당신은 동일한 코드 (모듈로 로깅 옵션) 안드로이드에 두 번 (52)를 기록 것을

import java.util.*; 

public class Test { 
    public static void main(String[] args) { 
     Calendar calendar = Calendar.getInstance(); 
     calendar.set(2011, 0, 1, 0, 0, 0); 
     System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // Prints 52 
     calendar.setMinimalDaysInFirstWeek(1); 
     System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // Prints 1 
    } 
} 

확인할 수 있습니까?

+0

어떻게됩니까 :'Calendar.getInstance (Locale.SPAIN)'? –

+0

@Metro :'새로운 로케일 ("es")'나는 두 번 모두 얻는다. '새로운 로케일 ("es", "ES")로 52와 1을 얻습니다. –

+0

흥미 롭습니다. 나는 그것이 안드로이드 특정인지 궁금하다. –

관련 문제