2012-10-23 39 views
3

着解析日期我有一個日期字符串:Java。使用日期格式

Thu Feb 20 08:00:00 EET 1992 

而且使用此代碼格式化:

String datePatternFrom = "EEE MMM dd HH:mm:ss ZZZ yyyy"; 
String datePatternTo = "MMM dd, yyyy"; 
String prettyDate = ""; 

try { 
    DateFormat fromFormatter = new SimpleDateFormat(datePatternFrom); 
    Date date = (Date)fromFormatter.parse(userBirthday.toString()); 

    DateFormat toFormatter = new SimpleDateFormat(datePatternTo); 
    prettyDate = toFormatter.format(date); 

} catch (ParseException e) { 
    e.printStackTrace(); 
} 

爲什麼我'得到異常?

java.text.ParseException: Unparseable date: "Thu Feb 20 08:00:00 EET 1992" (at offset 0) 
+0

我的電腦沒有例外。你用什麼java版本? 32位,64位? – MaVRoSCy

+0

userBirthday是Date對象。當我將它轉換爲toString()時,我有日期,正如我所提到的。 – user1766287

+0

爲什麼不只是使用'prettyDate = toFormatter.format(userBirthday);'如果userBirthday'是'Date'已經? – Vladimir

回答

3

問題在於工作日和月份以及您的語言環境。 Thu是英語,所以你必須告訴它應該使用英語平日解析器:

DateFormat fromFormatter = new SimpleDateFormat(datePatternFrom, Locale.US); 

這會爲你的模式工作。 如果您未指定區域設置,則會使用默認設置,但這並不總是英文設置。 ;-)

+1

我認爲這是正確的答案。可以@ @ user1766287請驗證它嗎? – MaVRoSCy

+0

謝謝。不好意思推遲了 :) – user1766287

0

可能您的userBirthday對象並未創建爲java.util.Date對象。你可以試試System.out.println(userBirthday.getClass().getName());

+0

爲什麼?在字符串的開頭有一個星期。還是你的意思是他們應該嘗試一個子字符串? –

+0

對不起,我沒有注意到它 – dan

+0

縫我更新的答案 – dan

0

它可能是您的語言環境。嘗試使用datePatternFrom製作SDF,將其日期設爲格式並在某處打印。看看彈出的內容。