2012-12-06 2 views
0

나는 다음 코드를 사용하여 프로그램을 가지고 : XXX.java에서 내가 얻은 날짜 값으로 SVC_APPR_DT_IN_MILLIS을 설정 java.lang.NumberFormatException의 : 입력 문자열의 경우 : "2012년 4월 12일 14시 44분는"

String.valueOf (date.getTime()) 강력한 텍스트를 사용하여 Oracle 데이터베이스의 레코드에서. 그것은 문자열로 저장됩니다

YYY.java에서
private void setApprovalDateProperty(Date date) { 
    setAdditionalProperty(SVC_APPR_DT_IN_MILLIS, String.valueOf(date.getTime())); 
} 

, 내가 다시 새 날짜를 사용하여 날짜를 반환 (Long.valueOf())

기록 중 하나에 대한
private Date getApprovalDate() throws ParseException { 
    String approvalDateInMillis = this.record 
     .getAdditionalProperty(XXX.SVC_APPR_DT_IN_MILLIS); 
    return new Date(Long.valueOf(approvalDateInMillis)); 
} 

, "04/12/2012 14:44:38"은 데이터베이스에있는 레코드의 날짜입니다.

For input string: "04/12/2012 14:44" 
java.lang.NumberFormatException: For input string: "04/12/2012 14:44" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 
    at java.lang.Long.parseLong(Long.java:412) 
    at java.lang.Long.valueOf(Long.java:518) 
    at YYY.getApprovalDate(YYY.java:634) 

데이터베이스를 검사 한 결과 데이터베이스의 많은 레코드가이 레코드를 제외하고 아무 문제없이 처리 될 수 있습니다. 이 오류의 가능한 원인을 알 수 있습니까? 문제를 시뮬레이트하고 싶지만 복제 방법을 모릅니다. 누구든지 어떤 제안이 있습니까?

답변

0

데이터베이스의 레코드 중 하나가 잘못된 버전으로 삽입되었거나 데이터베이스가 손상된 것 같습니다.

Long.valueOf를 호출하기 전에 approvalDateInMillis 값이 무엇인지 확인 했습니까?

if (!approvalDateInMillis.matches("^[0-9+]$")) 
    throw new Error(
    String.format("Invalid approvalDateInMillis format: '%s'", approvalDateInMillis)); 

return 문 앞에 입력 한 다음 디버깅을 계속 진행하여 실제로 데이터베이스에 무엇이 있는지 확인하십시오.

관련 문제