2012-04-16 3 views
2

내 프로그램은 현재 날짜를 취한 다음 루프에서 해당 날짜에 일주일을 추가하고 새 날짜를 인쇄합니다. 뭔가 같이 :Java Calendar.add는 잘못된 연도를 나타냅니다.

Calendar cal = Calendar.getInstance(); 
for (int i=0; i < 52; i++) { 
cal.add(Calendar.DATE, 7); 
// print date out 
} 

추가 방법은 내가이되는 올해는 4/16의 오늘 날짜를 사용 2012 그래서 2013 년

에 점프 지적 년 12 월 (30)에 도달 할 때까지 그것을 기대하는 방식으로 작동

this - cal.add(Calendar.DATE, 38*7); 
yields- "date:1/7/2013" 
this - cal.add(Calendar.DATE, 37*7); 
yields- "date:12/31/2013" 
this - cal.add(Calendar.DATE, 37*7-1); 
yields- "date:12/30/2013" 
this - cal.add(Calendar.DATE, 37*7-2); 
yields- "date:12/29/2012" 

그래서 내가 년 12 월 30 12 월 31 일까지 최대 교정 것을 알 수 있으며 월에 돌아 오면 그때 다시 저절로 해결 :/2012, 나는 몇 가지 다른 입력을 테스트했다. 이 일을하는 이유가 있습니까? 그것은 2012 윤년 인 또는 내가 뭔가를해야합니다 추가 방법을

+0

'getInstance()'메소드는 무엇을합니까? – biziclop

+0

아니요, 다른 뭔가 잘못되었습니다. 저에게'cal.add (Calendar.DATE, 37 * 7)'결과는'Mon Dec 31 22:29:04 SAST 2012'입니다. – Jesse

+2

북미 지역의 OpenJDK 6에 관한 내용이 없습니다. JDK는 무엇입니까? 장소? 또한, 날짜를 인쇄하는 데 사용하는 실제 코드는 무엇입니까? – Affe

답변

2

을 오해하고와 아무 상관이 있나요 것은 :

cal.add(Calendar.DAY_OF_YEAR, 7); 

Calendar.DATECalendar.DAY_OF_MONTH과 동일합니다.

+0

Calendar.DATE와 똑같은 대답이 아닙니까? Calendar.add 함수 읽기 DAY_OF_YEAR를 추가하는 것이 DAY_OF_MONTH (둘 다 롤 오버해야 함) 이상인 이유가 표시되지 않습니다 – Tim

+0

예, Calendar.DAY_OF_YEAR로 변경하려고했지만 동일한 동작을하는 것 같습니다. – user1337183

관련 문제