2013-04-01 6 views
-1

왜 이런 일이 발생하는지 이해하고 싶습니다. 어떻게이 작은 문제를 해결할 수 있습니까? 일, 월 및 연도를 제공 한 후 Java 캘린더 인스턴스에서 주 번호를 가져올 수 있기를 원합니다. 내가 할 경우 : 내가 호출 할 경우기본 필드로 달력을 만들 때 잘못된 주 번호를 제공하는 캘린더 인스턴스

Calendar cal=Calendar.getInstance(); 
     cal.set(Calendar.DAY_OF_MONTH, 11); 
     cal.set(Calendar.MONTH,2); 
     cal.set(Calendar.YEAR, 2013); 

2013년 2월 11일 위의 달력 인스턴스에서, 주 7 :하지만,

int weekNumber=cal.get(Calendar.week_of_year) 

나는 주 번호 (11) 어떤 생각을 왜 가져? 로케일을 설정해 보았지만 아무런 차이가 없었습니다. 문제는 파서를 사용하여 xml 파일에서 해당 항목을 읽었을 때만이 세 필드에서 캘린더를 빌드 할 수 있으며 형식이 dd-mm-yyyy 인 것입니다. 더 이상 정보가 없습니다

+0

이유 및 대안에 대한 자세한 배경 및 내용은이 게시물을 참조하십시오. http://stackoverflow.com/questions/344380/why-is-january-month-0-in-java-calendar – MickJ

+0

http : //stackoverflow.com/questions/344380/why-is-january-month-0-in-java-calendar –

답변

0

Calendar의 월 필드는 0입니다. 2 값은 Calendar.MARCH에 해당합니다. 혼동을 피하려면 Calendar 상수를 사용하는 것이 좋습니다. 당신은 사용할 수 있습니다 : 당신은 월 사용했다

cal.set(Calendar.MONTH, Calendar.FEBRUARY); 
0

, Calendar 자바 개월 0 기반이기 때문에 0 = 월 1 = 월 2 = 월을.

사용

cal.set(Calendar.MONTH,1); 

또는

cal.set(Calendar.MONTH, Calendar.FEBRUARY); 

당신이 상수를 사용할 수 있는지

. 그렇지 않으면 파서에서받은 월의 1을 뺍니다.