IT Share you

Java Calendar 세트 (int year, int month, int date)가 올바른 날짜를 반환하지 않는 이유는 무엇입니까?

shareyou 2021. 1. 10. 19:19
반응형

Java Calendar 세트 (int year, int month, int date)가 올바른 날짜를 반환하지 않는 이유는 무엇입니까?


이 질문에 이미 답변이 있습니다.

문서에 따르면 달력 set ()은 다음과 같습니다.

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html#set%28int,%20int,%20int%29

set(int year, int month, int date) 
Sets the values for the calendar fields YEAR, MONTH, and DAY_OF_MONTH.

암호:

Calendar c1 = GregorianCalendar.getInstance();
c1.set(2000, 1, 30);  //January 30th 2000
Date sDate = c1.getTime();

System.out.println(sDate);

산출:

Wed Mar 01 19:32:21 JST 2000

1 월 30 일이 아닌 이유 ???


월 1은 2 월입니다. 2 월 30 일이 3 월 1 일로 변경됩니다. 월은 0으로 설정해야합니다. 가장 좋은 방법은 Calendar에 정의 된 상수를 사용하는 것입니다.

c1.set(2000, Calendar.JANUARY, 30);

Calendar 개체의 월은 0부터 시작합니다.

0 = January = Calendar.JANUARY
1 = february = Calendar.FEBRUARY

예에서 선택한 날짜가 흥미 롭습니다. 예제 코드 블록은 다음과 같습니다.

Calendar c1 = GregorianCalendar.getInstance();
c1.set(2000, 1, 30);  //January 30th 2000
Date sDate = c1.getTime();

System.out.println(sDate);

및 출력 Wed Mar 01 19:32:21 JST 2000.

처음 예제를 읽을 때 출력이 잘못되었다고 생각하지만 사실입니다.)

  • Calendar.Month 0부터 시작하므로 1은 2 월을 의미합니다.
  • 2 월 마지막 날은 28 일이므로 출력은 3 월 2 일이어야합니다.
  • 그러나 선택한 연도는 중요합니다. 2000은 2 월 29 일을 의미하므로 결과는 3 월 1 일이어야합니다.

참조 URL : https://stackoverflow.com/questions/4931955/why-java-calendar-setint-year-int-month-int-date-not-returning-correct-date

반응형