0
날짜를 만드는 데 문제가 있습니다.GregorianCalendar가 MONTH 대신에 0을 반환하는 이유는 무엇입니까?
Calendar gc = new GregorianCalendar();
int leto = randBetween(2001, 2020);
gc.set(GregorianCalendar.YEAR, leto);
int dan= randBetween(1, gc.getActualMaximum(GregorianCalendar.DAY_OF_YEAR));
gc.set(GregorianCalendar.DAY_OF_YEAR, dan);
// System.out.println(gc.get(GregorianCalendar.YEAR) + "-" +
// gc.get(GregorianCalendar.MONTH) + "-" +
// gc.get(GregorianCalendar.DAY_OF_MONTH));
public static int randBetween(int start, int end) {
return start + (int)Math.round(Math.random() * (end - start));
}
날짜를 생성하는 기능이 있지만이 기능에는 많은 오류가 있습니다. MONTH 값이 설정되지 않은 날짜가 많습니다.
31,6,2004 1,7,2004
23,0,2013 24,0,2013
19,0,2008 20,0,2008
31,9,2014 31,9,2014
그러나 왜 이런 일이 발생합니까?
심지어이 API 해낸 사람은 그 논리적 인 생각하는 자바 날짜 API와 상당히 일반적인 실수, 아마도 유일한 사람이며, 아마, 확신 무엇 실패합니까? 정확히 무엇이 잘못 될까요? 프로그램이 충돌하거나 예기치 않은 결과가 나타 납니까? 실제 결과는 예상 결과와 어떻게 다른가요? – nhgrif
31.6 나는 생각하지 않았다 : (그리고 20.0은 존재하지 않았다.) – user2921198
Java의 달은 0부터 시작한다. 7 월 31 일, 8 월 1 일, 1 월 23 일 등이있다. – rgettman