2014-04-01 2 views
0

yyyyMMdd, yyyy-MM-dd, yyyy/MM/dd와 같은 여러 형식이 될 수있는 날짜를 'yyyy-MM-dd HH : mm : ss'의 표준으로 변환하려고합니다. 아래 코드에서 예상 날짜 형식을 'yyyyMMdd'로 설정하고 '2014-02-21'에 전달했습니다. 나는 Parse Exception을 기대하고 있었지만, 어떻게 이것이 '2013-12-02 00 : 00 : 00'을 반환 하는지를 예상하고있었습니다. 여기서 무엇을 놓치고 있습니까?Java SimpleDateFormat

SimpleDateFormat sdfSource = new SimpleDateFormat("yyyyMMdd"); 
Date date = sdfSource.parse("2014-02-21"); 
SimpleDateFormat sdfDestination = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
System.out.println(sdfDestination.format(date)); 
+0

4 분 안에 같은 답변을! – PbxMan

답변

3

해당 스 니펫의 처음 두 줄 사이에 sdfSource.setLenient(false);을 추가하는 것이 좋습니다.

여기에 나타나는 현상은 "-0"이 해당 월로 해석되고 "2"이 해당 날짜로 해석됩니다. lenient true (기본값)이면 허용됩니다. "-0"은 첫 달 이전 달로 해석됩니다. 즉 "전년도의 12 월"입니다.

+0

감사합니다. 이 문제를 알아 내려고 시도하는 동안 나는 이것을 발견했지만 어떻게 보았는가를 발견했다. – kiran

1

lenient 속성은 기본적으로 true로 설정됩니다. here

sdfSource.setLenient(false); 
+0

감사합니다. – kiran