2009-04-23 14 views
6

Nie mogę zrozumieć, dlaczego to kilka linijekNieoczekiwany java wyjątek SimpleDateFormat parse

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); 
     } 

    } 

przyczyna wyjątki i wydrukować

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

... podczas gdy „można przeanalizować” czas jest zgodny z formatem ciąg przeszedłem do SimpleDateFormat() .. Any Idea?

+0

Jaki jest dokładnie twój "czas"? –

+0

Wydrukowałem z println() .. time jest ciągiem i zawiera "Wt Mar 31 06:09:00 CEST 2009 " – Emilio

Odpowiedz

19

Jest to kwestia lokalizacji. Użyj:

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

Byłoby miło, gdyby wiadomość o wyjątku była nie tylko "nieodstępną datą", ale także pozycją w tekście, w której nie udało się ... – golimar

-1

Działa dla mnie.

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

Działa tylko dlatego, że domyślne ustawienia regionalne pasują do oczekiwanego. – kgiannakakis

+0

Wystarczająco fair:) .... –

-1

"Z" w twoim formacie reprezentuje strefę czasową, a Java rozpoznaje tylko niektóre identyfikatory stref czasowych. Możesz pobrać listę z klasy TimeZone jako Tablicę Sznurkową. CEST nie pojawia się na liście właśnie wygenerowanej z JDK 1.5

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

Mam nadzieję, że to pomoże.

Powiązane problemy