2012-11-26 5 views
3

"01-26-2012 03:07 AM" 형식으로 나타나는 날짜를 구문 분석하려고합니다.SimpleDateFormat에 대해 설명되지 않은 ParseException

java.text.ParseException : 파싱 할 일

String date = "01-26-2012 03:07 AM"; 
Date myDate = DATE_FORMAT.parse(date.trim()); 

나는 ParseException를 얻을 :

private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a"); 

나는 다음과 같은 구문을 분석하지만 때마다 :

나는이 SimpleDateFormat를 생성 : "01-26-2012 03:07 AM" at java.text.DateFormat.parse (DateFormat.java : 337)

SimpleDateFormat 문자열이 맞습니까? 파싱으로 인해 멈추는 것이 있습니까?

답변

3

로캘 문제 일 가능성이 큽니다. 당신은 예를 들어 영어 로케일로하려고하면, 그것은 작동합니다 :

DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.ENGLISH); 

당신이 로케일을 지정하지 않기 때문에, 시스템의 기본 하나를 사용하고, 올바르게 구문 분석되지 않을 수 있습니다 "AM".

아래 코드

MyDate가 = 목 일월 26 그리니치 표준시 03시 07분 0초 2,012

측면 참고로
public static void main(String[] args) throws Exception { 
    String date = "01-26-2012 03:07 AM"; 
    DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.ENGLISH); 
    Date myDate = DATE_FORMAT.parse(date.trim()); 
    System.out.println("myDate = " + myDate); 
} 

를 출력하면, 예를 들면 Locale.CHINESE에 코드를 변경하면, 구문 분석 예외가 발생합니다.

+0

감사합니다. Locale.ENGLISH, Locale.US 및 몇 가지 다른 로케일로 시도했습니다. 그래도 같은 문제가있는 경우 : ( – user1854772

+0

저에게 맞습니다 - 참조 용으로 전체 예제를 게시했습니다 - 작동하지 않는지 확인하려고 시도 할 수 있습니다. 어떤 Java 버전을 사용합니까? – assylias

+0

Java 1.6.0_33. 당신의 코멘트에 예제를 복사했는데 여전히 작동하지 않습니다. – user1854772

0

thread safe이 아니므로 SimpleDateFormat을 정적 개체로 사용하는 것은 맞지 않습니다. 그게 여기서 문제라고 말할 수는 없지만 포인터 일 수 있습니다.

관련 문제