2013-10-10 21 views
1

什麼錯在使用下面的代碼解析日期星期四2013年7月10日異常的字符串到日期的轉換

Date parse = new SimpleDateFormat("EEE d M yyyy").parse("Thu 10 July 2013"); 

它正在爲

new SimpleDateFormat("EEE M yyyy").parse("Thu July 2013"); 

,但如果我把天(d)在串那麼它扔以下異常

new SimpleDateFormat("EEE d M yyyy").parse("Thu 10 July 2013"); 

java.text.ParseException: Unparseable date: "Thu 10 July 2013" 

感謝inadvance

+1

'新的SimpleDateFormat(「EEE M YYYY 「).parse(」2013年7月的星期四「)實際上並不適用於我,它會拋出一個'Unparseable date:2013年7月」異常 – MadProgrammer

+0

新的SimpleDateFormat(「EEE M yyyy」)。解析(「2013年7月」);不起作用 – NewUser

回答

1

使用dd而不是d也MMM代替MM:

new SimpleDateFormat("EEE dd MMM yyyy").parse("Thu 10 July 2013"); 
+2

不,不起作用;) – MadProgrammer

+0

@Juned你需要更新你的答案 – upog

+0

@MadProgrammer感謝您的評論,更正! –

3

嘗試擴大你的格式類似EEE d MMMM yyyy

單或雙M將被中斷的數字月份值(即{0}7 ),MMM將被中斷,因爲短月份名稱(即Jul)和MMMM將因全月份名稱而中斷(即July

還應當指出的是,在我的測試MMMMMMM似乎工作

0

我試圖和

new SimpleDateFormat("EEE d M yyyy").parse("Thu 10 July 2013"); 

不工作,因此我改變了一個月格式MMMM

Date parse = new SimpleDateFormat("EEE MMMM yyyy").parse("Thu July 2013"); 
Date p1 = new SimpleDateFormat("EEE d MMMM yyyy").parse("Thu 10 July 2013"); 
System.out.println(p1); 

這是行得通的。

0

我嘗試這一點,但它會導致運行時異常

java.util.Date dt = new SimpleDateFormat("EEE M yyyy").parse("Thu July 2013"); 

根據Java文檔Oracle Java Doc

如果你想收杆日期字符串月份名稱,如七月你應該使用MMMMMMM

如果你想解析包含數月的可以使用中號MM .e.g日期。 ( 「28 8 2012」)

對於你的情況,你應該使用MMM或MMMM,而不是M.like這

new SimpleDateFormat("EEE d MMM yyyy").parse("Thu 10 July 2013"); 

new SimpleDateFormat("EEE d MMMM yyyy").parse("Thu 10 July 2013") ;