728x90
반응형
문제
네이버 뉴스 검색 API 응답 파라미터 중 "Tue, 13 Jun 2023 22:12:00 +0900" 형태의 문자열을 "yyyyMMddHHmmss" 형태로 변환하기 위해 String(EEE, dd MMM yyy HH:mm:ss Z) -> Date -> String(yyyyMMddHHmmss) 으로 반환해주는 유틸 함수를 만드는 중 Date로 parse하는 도중 java.text.ParseException: Unparseable date 이 발생하여 문제 해결 내용을 기록한다.
오류 발생 소스
public static String dateFormat(String inDate) {
String formatDate = "";
SimpleDateFormat format1 = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMddHHmmss");
try {
Date date = format1.parse(inDate);
formatDate = format2.format(date);
}catch(ParseException e) {
e.printStackTrace();
}
return formatDate;
}
문제는 "EEE, dd MMM yyyy HH:mm:ss Z" 형식의 날짜 포맷이 SimpleDateFormat에서 "Tue, 13 Jun 2023 22:20:00 +0900"와 일치하지 않는다는 것이다. SimpleDateFormat은 월(Month)을 약어로 표현하기 위해 MMM을 사용한다. 그러나 Tue는 EEE (요일 약어)와 일치하는 것이므로 SimpleDateFormat에서는 파싱할 수 없다.
올바른 형식으로 변경하려면 MMM을 MMM 형식의 월 약어로 대체해야 한다. 예를 들어, "Tue, 13 Jun 2023 22:20:00 +0900"의 경우 "Tue, 13 Jun 2023 22:20:00 +0900"와 일치하도록 SimpleDateFormat을 설정해야 한다.
위 같은 문제로 아래와 같이 수정하여 에러를 해결하였다. - Locale.English
추가
public static String dateFormat(String inDate) {
String formatDate = "";
SimpleDateFormat format1 = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMddHHmmss");
try {
Date date = format1.parse(inDate);
formatDate = format2.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
return formatDate;
}
public Map<String, Object> stockNewsStacPrcs() {
JSONObject jsonObj = stockHandler.findNews("삼성전자");
Map<String, Object> outMap = null;
JSONArray jsonArray = (JSONArray)jsonObj.get("items");
for(int i=0; i<jsonArray.size(); i++) {
JSONObject item = (JSONObject)jsonArray.get(i);
log.info("item pubDate: {}", InterfaceUtil.dateFormat((String)item.get("pubDate")));
log.info("item title: {}", item.get("title"));
log.info("item description: {}", item.get("description"));
}
return outMap;
}
728x90
반응형
'Programming > Java' 카테고리의 다른 글
[Java] 레코드(Record) - 개념, 특징, 예제 (2) | 2023.12.26 |
---|---|
[Java] static 개념 및 사용법 (1) | 2023.05.08 |
[Java] 스트림(Stream) 사용 시 주의사항 (재사용, 지역변수 접근, 무한 스트림) (0) | 2023.03.13 |
[Java] 약수의 개수 구하는 최적의 방법(알고리즘) (0) | 2022.11.20 |
[Java] Map이란? (개념, 활용, 예제 등) (0) | 2022.10.02 |