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을 지정해줘야 정상적으로 파싱이 가능함.