java.text.ParseException: Unparseable date:

 

String형태의 문자열 날짜형식에 대해서 date format으로 변환시 파싱오류가 발생할 수 있는데, 이는 저장된 문자열 날짜형식과 현재 내 시스템에서 사용하는 문자열의 날짜형식 locale달라서 발생하는것으로 추정함…(그냥 무책임하게…..)….

public static void main(String[] args) {
	String param = "11/Jun/2012:00:00:00";

	DateFormat parser = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss", Locale.ENGLISH);
	DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

	if (param == null || param.equals("")) {
		System.out.println("Null or Empty");
	}
	if (param.length() == 8) {
		param += "000000";
	}
	Date date;
	try {
		date = parser.parse(param);
		System.out.println(formatter.format(date).toString());
	} catch (ParseException e) {
		System.out.println("exception = " + e.getMessage());
	}
}

위의 샘플과 같이 변환대상 날짜 형식에 “Jun” 으로 6월이 영문으로 표시되고 있는데, 내 PC에서는 locale이 한국어로 설정되어 있기 때문에, 위의 코드상에서 Locale.ENGLISH가 빠져있는 경우에는 ParseException이 발생하기 때문에, 원본 날짜형식 문자열의 Locale을 지정해줘야 정상적으로 파싱이 가능함.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.