2010-07-06 4 views
2

안녕하세요 저는 다음 코드SimpleDateFormatter가 구문 분석하지 않습니다!

public static SimpleDateFormat postedformat = 
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); 
Date newDate = new Date(posteformat.parse("Wed, 30 Jun 2010 15:07:06 CST")); 

를 사용하고 있지만 내가 IllegalArgumentException를 얻고있다 Wed, 30 Jun 2010 15:07:06 CST

날짜를 구문 분석 SimpleDateFormatter를 사용하는 것을 시도하고있다. 도와주세요!

+0

어떤 라인에서 IllegalArgumentException을 얻고 있습니까? –

+0

구문 분석 호출에서 예외가 발생합니다 – schwiz

+2

그건 그렇고 : SimpleDateFormat을 상수로 사용하지 마십시오. SimpleDateFormat의 디자인 문제로 인해 여러 스레드에서 동시에 안전하게 사용할 수 없습니다. 이 문제를 피하는 가장 안전한 방법은 사용해야 할 때 항상 SimpleDateFormat의 새 인스턴스를 만드는 것입니다. –

답변

4

postedformat.parse()Date을 반환하고 Date(Date) 생성자는 없습니다.

는 아마도 new Date에 전화를 제거, 그래서 당신은 Date newDate = poste....

+0

... 생성자 new Date (Long)를 사용하려면 파싱 식 뒤에 .getTime()을 추가하면됩니다. – vlood

+0

잘 잡으세요! 구문 분석 결과는 이미 Date 객체입니다. 하지만 런타임 오류가 아닌 컴파일 시간 오류가 예상됩니다. 질문에 오타가 될 수 있습니다. 문제가 된 –

+0

덕분에 – schwiz

3

귀하의 코드는 컴파일되지 않습니다 충분 말한다. 이 약간의 수정은 컴파일하고 성공적으로 구문 분석 :

public static void main(String[] args) throws ParseException { 
    SimpleDateFormat postedformat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); 
    Date newDate = postedformat.parse("Wed, 30 Jun 2010 15:07:06 CST"); 
    System.out.println("newDate = " + newDate); 
} 

이는 Mac OS X에서 자바 6을 사용하고

1

인수

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class DateFormat { 
    public static SimpleDateFormat postedformat = 
     new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); 
    public static void main(String[] args) { 
     try { 
      Date newDate = postedformat.parse("Wed, 30 Jun 2010 15:07:06 CST"); 
      System.out.println("Date: " + newDate); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

출력으로 java.util.Date을 취하는 java.util.Date() 생성자가 없습니다 :

Date: Wed Jun 30 22:07:06 BST 2010 
+0

그러나'new Date (new Date())')로 컴파일 할 수 없어야합니다. –

1

javadoc 예제는 unescap 미국의 로켈 용이지만 쉼표는 없습니다. 그러니 것은 (아론이 제안) 쉼표를 탈출 시도하거나 다른 생성자를 사용하여 로케일 설정 :

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); 

또 다른 문제는 손과 ambigious에에 사용되지 시간대 ('CST') 수를 기타 (javadoc 당 java.util.TimeZone). timezone 속성없이 작동하는지 테스트합니다 (String 및 value 형식 모두).

관련 문제