Skip to content

Java SimpleDateFormat 으로 날짜 파싱시 주의 할것

2015/09/11

소스

System.out.println(“=================================================”);
String 날짜 = Calendars.getNextDate(30, true);
System.out.println(“날짜 : ” + 날짜);

SimpleDateFormat fromFormat = new SimpleDateFormat(“yyyyMMdd”);
SimpleDateFormat toFormat = new SimpleDateFormat(“yyyy-MM-dd”);
String reformatted = 날짜;

System.out.println(“reformatted : ” + reformatted);

try {
System.out.println(“reformatted : ” + fromFormat.parse(reformatted));
} catch (ParseException e2) {
e2.printStackTrace();
}

기대결과

ParseException 이 발생하기를 기대했으나 실제 결과는 전혀 다르게 나왔다.

실행결과

=================================================
날짜 : 2015-10-11
reformatted : 2015-10-11
reformatted : Fri Oct 31 00:00:00 KST 2014
[set날짜] reformatted : 2014-10-31

이유

http://stackoverflow.com/questions/6859211/weird-behavior-in-java-text-simpledateformat-expecting-yyyymmdd-given-yyyy-mm-dd

해결 방법

Exception 을 발생시키기 위해서는

fromFormat.setLenient(false); 를 넣어주면 되긴 한다.

잡설

stackoverflow 에 답변을 대입해 보면

year = “2015”

month = “-1”

day = “1-”

해서 2014-11-01 ? 정도가 되어야하는가 싶은데 그것도 아니다

No comments yet

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: