2009-04-23 20 views
6

私はなぜこの数行予期しないJavaのSimpleDateFormatの構文解析例外

Date submissionT; 
    SimpleDateFormat tempDate = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy"); 

    public time_print(String time) { 
     try { 
      submissionT=tempDate.parse(time); 
     } 
     catch (Exception e) {  
      System.out.println(e.toString() + ", " + time); 
     } 

    } 

原因の例外を理解し、「解析できない」時間がフォーマットに準拠している間...

java.text.ParseException: Unparseable date: "Tue Mar 31 06:09:00 CEST 2009", Tue Mar 31 06:09:00 CEST 2009 

をプリントアウトすることはできません文字列私はSimpleDateFormat()に渡しました.. 任意のアイデア?

+0

正確にあなたの「時間」は何ですか? –

+0

私はprintln()でプリントアウトしました。時刻は文字列で、 "Tue Mar 31 06:09:00 CEST 2009 " – Emilio

答えて

19

これは、ロケールの問題です。

sdf = SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy", Locale.US); 
+0

例外メッセージが「Unparseable date」だけでなく、失敗した文字列内の位置であった場合にもいいでしょう。 – golimar

-1

私のために働きます。

public class Main { 

public static void main(String[] args) 
{ 
    time_print("Tue Mar 31 06:09:00 CEST 2009"); 
} 

static Date submissionT; 
static SimpleDateFormat tempDate = new SimpleDateFormat("EEE MMM d HH:mm:ss z yyyy"); 

public static void time_print(String time) { 
    try { 
     submissionT=tempDate.parse(time); 
     System.out.println(submissionT); 
    } 
    catch (Exception e) { 
     System.out.println(e.toString() + ", " + time); 
    } 

} 

}

+5

が含まれています。 – kgiannakakis

+0

fair ....).... –

-1

フォーマットの 'z'は、TimeZoneを表し、Javaは特定のタイムゾーンIDのみを認識します。 TimeZoneクラスのリストを文字列配列として取得できます。 CESTはJDK 1.5から生成したリストには表示されません

String[] aZones = TimeZone.getAvailableIDs(); 
    for (int i = 0; i < aZones.length; i++) { 
     String string = aZones[i]; 
     System.out.println(string); 
    } 

これが役に立ちます。

関連する問題