2010-05-31 2 views
5

안녕하세요. GregorianCalendar에 문제가 있습니다.자바 GregorianCalendar 내가 뭘 잘못하고 있니? 잘못된 데이트?

거기에 무슨 문제가 있습니까?

결과는 2010/6/1이며 2010/05/31은 어떻게됩니까?

package test; 

import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class Main { 

    public static void main(String[] args) { 
     Calendar cal = new GregorianCalendar(2010, 5, 31); 
     System.out.println(cal.get(Calendar.YEAR) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.DAY_OF_MONTH)); 
    } 

} 

답변

9

자바 카운트 월이 0부터 5 월까지입니다. 상수를 사용하는 것이 더 안전합니다. 그래서 나는 다음과 같이 쓸 것입니다 :

Calendar cal = new GregorianCalendar(2010, Calendar.MAY, 31); 

귀하의 캘린더는 인쇄물에 적용됩니다. cal.get(Calendar.MONTH)을하면 7 월에 의미가 7이됩니다.

1

월 수가 0 기준이므로 6 월 31 일을 설정하려고하지만 6 월은 30 일이므로 7 월 1 일로 변환됩니다.

1

위의 답변을 추가하면 6 월 31 일이 없으므로 Calendar.setLenient이 기본적으로 true이기 때문에 캘린더는 다음 올바른 날짜로 캘린더를 승급합니다.

관련 문제