2014-01-23 210 views
1

如何解析這個日期?java解析日期:

Mon Jul 29 02:00:00 CEST 2013 

代碼:

public class HelloWorld{ 

    public static void main(String []args){ 

     try { 
       String startdateString = "Mon Jul 29 02:00:00 CEST 2013"; 
     SimpleDateFormat fromUser2 = new SimpleDateFormat("EEE MMM d hh:mm:ss z yyyy"); 

      startdateString = myFormat.format(fromUser2.parse(startdateString)); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

我得到以下異常

java.text.ParseException: Unparseable date: "Mon Jul 29 02:00:00 CEST 2013" 

16:13:57,761 ERROR [stderr] (http-/0.0.0.0:8080-1) at java.text.DateFormat.parse(Unknown Source) 
+3

你是如何創造這個'myFormat'變量?我把它改成'fromUser2'並運行沒有問題。 –

+1

這個問題問得[已回答] [1] [1]:http://stackoverflow.com/a/6154816/34880 –

+0

@Fernando:啊 - 同意, 「星期一」 會不會是在默認語言環境中的有效日期。投票重複。 –

回答

2

你不提供任何Locale,如果你沒有在英文語言環境中運行它的代碼將無法正常工作(如美國或英國)。

下面的代碼(修正)爲我工作:

try { 
    String startdateString = "Mon Jul 29 02:00:00 CEST 2013"; 
    SimpleDateFormat fromUser2 = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy", Locale.ENGLISH); 

    System.out.println(fromUser2.parse(startdateString)); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
+0

而不是發佈兩個類似的答案,只提供一個並編輯它。 –

+0

順便說一下,我測試過使用'd'而不是你的提議'dd'並且工作正常... –

+0

@LuiggiMendoza我不確定這是否是SO或使用我的瀏覽器的問題,但我從不想要發佈兩次。 – LaurentG

2

你需要使用的SimpleDateFormat的對象格式化你的日期。

更換

startdateString = myFormat.format(fromUser2.parse(startdateString)); 

通過

startdateString = fromUser2.format(fromUser2.parse(startdateString)); 
1

我找不到對谷歌這個答案,但確定在這裏alread:

Java - Unparseable date

try { 
String startdateString = "Mon Jul 29 02:00:00 CEST 2013"; 
SimpleDateFormat fromUser2 = new SimpleDateFormat("EEE MMM dd hh:mm:ss z yyyy", Locale.ENGLISH); 

    System.out.println(fromUser2.parse(startdateString)); 
} catch (ParseException e) { 
    e.printStackTrace(); 
}