2013-07-26 2 views
-1

나는 데이터베이스에서 날짜를 가져오고 폴더의 유틸리티 날짜로 변환 할 필요가 말한다 예외 ...은 파싱 할 형식

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
String dob = rst.getString("dob"); 
java.util.Date DateTemp = new java.sql.Date(formatter.parse(dob).getTime()); 

를 throw하지만 unparseable format를 말한다 예외가 발생합니다.

+5

dob를 인쇄하면 무엇인지 알 수 있습니다. –

+0

주어진 날짜 형식은 무엇입니까? 나는 "rst.getString ("dob ")"의 값을 의미합니다. 이로 인해 excetpion을 던졌습니다 – Veera

+1

다른 사람들의 의견을 추가하는 이유는 무엇입니까 날짜를 문자열로 저장합니까, 당신은 DB에 날짜 관련 데이터 형식에 갈 수 있습니다! – NINCOMPOOP

답변

3

간단한 질문에 대한 답변입니다. dob 값이 올바른 형식이 아닙니다. formatter.parse(dob)은 구문 분석 할 수 없거나 적절한 형식으로 데이터를 추출하고 변경하려고 시도했기 때문에 작동하지 않습니다.

final String OLD_FORMAT = "yyyy/MM/dd"; 
final String NEW_FORMAT = "dd/MM/yyyy"; 

String oldDateString = rst.getString("dob").replaceAll("-","/");//you to need to replace all the all dashes with slashes 
String newDateString; 

SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT); 
Date d = sdf.parse(oldDateString); 
sdf.applyPattern(NEW_FORMAT); 
newDateString = sdf.format(d); 

출처 :

How can I change the date format in Java?

+1

여전히 같은 예외이지만, 나는 당신이 원하는 것을 99 % 제공했다. 나는 단지 1 % 부족합니다 ... –

+0

"dob"varaiable을 인쇄 했습니까? 결과를 여기에 게시 할 수 있습니까? –

+0

또한 전체 오류/예외 메시지를 게시 할 수 있습니까? (그리고 문제의 근본 원인을 알려주십시오)? –

1

단순히 대신 ResultSet.getDate를 사용, 그것은 java.util.Date 그래서 당신이 할 수있는 java.sql.Date하는 exte의 NDS를 반환 지금

는 (DB 형식의 애플리케이션 형식) 형식을 변경하려면 java.util.Date이 필요한 곳에 사용하십시오.

ParseException와 관련하여 : DATE 열의 ResultSet.getString은 yyyy-MM-dd 형식의 날짜를 반환하므로이 형식으로 파싱해야합니다.

데이터베이스의
1

(예를 2013년 11월 28일 용) YYYY/MM은/DD로 저장되고, I (예 : 28/11/2013 용) 일/월/년 같은 응용 프로그램에서 사용할 필요 dd/MM/yyyy을해야

그런 다음 첫 번째 포맷 날짜 문자열을 구문 분석하는 문자열로 날짜 개체의 서식을 다음 yyyy/MM/dd이어야하며 동시에!

또한 DB 테이블에 날짜를 저장하는 데 적합한 데이터 유형이 [DATE, DATETIME 등]이며 [CHAR, VARCHAR] 문자열은 사용하지 마십시오.