[java] 년, 월, 일에서 자바 날짜 객체 생성

int day = Integer.parseInt(request.getParameter("day"));  // 25
int month = Integer.parseInt(request.getParameter("month")); // 12
int year = Integer.parseInt(request.getParameter("year")); // 1988

System.out.println(year);

Calendar c = Calendar.getInstance();
c.set(year, month, day, 0, 0);

b.setDob(c.getTime());

System.out.println(b.getDob());

출력은 다음과 같습니다.

1988 년
1 월 25 일 수요일 00:00:08 IST 1989

나는 통과하고 25 12 1988있지만 25 Jan 1989. 왜?



답변

달력에서 월은 0부터 시작합니다. 따라서 12는 12 월 + 1 개월로 해석됩니다. 사용하다

c.set(year, month - 1, day, 0, 0);


답변

이것이 Java 8 이전에 제가 가장 좋아하는 방법입니다.

Date date = new GregorianCalendar(year, month - 1, day).getTime();

나는 이것이 다음보다 더 깨끗한 접근 방식이라고 말하고 싶습니다.

calendar.set(year, month - 1, day, 0, 0);


답변

java.time

java.timeJava 8에 내장 된 프레임 워크 사용

int year = 2015;
int month = 12;
int day = 22;
LocalDate.of(year, month, day); //2015-12-22
LocalDate.parse("2015-12-22"); //2015-12-22
//with custom formatter 
DateTimeFormatter.ofPattern formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate.parse("22-12-2015", formatter); //2015-12-22

시간 (시, 분, 초)에 대한 정보도 필요하면에서 LocalDate로 변환을 사용하십시오.LocalDateTime

LocalDate.parse("2015-12-22").atStartOfDay() //2015-12-22T00:00


답변

Java의 캘린더 표현은 최고가 아니며 Java 8을 위해 작업하고 있습니다. Joda Time 또는 다른 유사한 라이브러리 를 사용하는 것이 좋습니다 .

다음은 Joda Time 라이브러리에서 LocalDate를 사용하는 간단한 예입니다.

LocalDate localDate = new LocalDate(year, month, day);
Date date = localDate.toDate();

여기 에서 빠른 시작 자습서를 따를 수 있습니다.


답변

JavaDoc 참조 :

month-MONTH 달력 필드를 설정하는 데 사용되는 값. 월 값은 0부터 시작합니다. 예 : 1 월의 경우 0.

따라서 설정 한 달은 다음 해의 첫 번째 달입니다.


답변

날짜, 타임 스탬프 및 기간으로 작업 할 때 생활을 편하게 만드십시오. HalDateTime 사용

http://sourceforge.net/projects/haldatetime/?source=directory

예를 들어 다음과 같이 입력을 구문 분석하는 데 사용할 수 있습니다.

HalDateTime mydate = HalDateTime.valueOf( "25.12.1988" );
System.out.println( mydate );   // will print in ISO format: 1988-12-25

구문 분석 및 인쇄를위한 패턴을 지정할 수도 있습니다.


답변