2012-05-23 81 views
2

我如何解析這個日期格式Mon May 14 2010 00:00:00 GMT+0100 (Afr. centrale Ouest)此日期格式05-14-2010我的意思是mm-dd-yyyy解析日期的Java

它告訴我這個錯誤:

java.text.ParseException: Unparseable date: "Mon May 14 2010 00:00:00 GMT+0100 (Afr. centrale Ouest)"

編輯

SimpleDateFormat formatter = new SimpleDateFormat("M-d-yyyy"); 
newFirstDate = formatter.parse(""+vo.getFirstDate()); //here the error 

提前致謝!

+3

請顯示您一直在嘗試使用的代碼。 –

+0

** vo **是什麼? – Nurlan

+0

vo.getFirstDate()'的返回類型和值是什麼? –

回答

5

此代碼首先適應串了一下,然後繼續解析它。它尊重時區,只是刪除「GMT」,因爲這就是SimpleDateFormat喜歡它。

final String date = "Mon May 14 2010 00:00:00 GMT+0100 (Afr. centrale Ouest)" 
    .replaceFirst("GMT", ""); 
System.out.println(
    new SimpleDateFormat("MM-dd-yyyy").format(
     new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss Z").parse(date))); 

打印:

05-14-2010 

記住,輸出也時區敏感。由您的輸入字符串定義的時刻在我的時區中被解釋爲,屬於程序打印的日期。如果您只需要將「2010年5月14日」轉換爲「05-14-2010」,那是另一回事,SimpleDateFormat不適合這種情況。該庫將更加乾淨地處理這種情況。

+0

謝謝,同樣的錯誤:'java.text.ParseException:Unparseable date:「Mon 2012年5月14日00:00:00 +0100」' – Adil

+0

@adil我運行此代碼並沒有得到異常。代碼打印爲答案狀態。這是Java 6,BTW。我從你的消息中看到,你顯然沒有運行我的代碼,而是你自己的一些版本。由於我不知道你運行哪個確切的代碼來獲得這個異常,所以我很難做到這一點。 –

+0

@adil現在我在上面的註釋中解析了您所抱怨的確切字符串:'System.out.println(new SimpleDateFormat(「MM-dd-yyyy」)。format(new SimpleDateFormat(「EEE MMM dd yyyy HH:mm:解析(「Mon May 14 2012 00:00:00 +0100」)));'並打印'05-14-2012'。 –

2
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class Test 
{ 
    public static void main(String args[]) throws ParseException 
    { 
     // Remove GMT from date string. 
     String string = "Mon May 14 2010 00:00:00 GMT+0100 (Afr. centrale Ouest)".replace("GMT" , ""); 

     // Parse string to date object. 
     Date date = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss Z").parse(string); 

     // Format date to new format 
     System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(date)); 
    } 
} 

輸出:

05-13-2010 
+0

編輯我的帖子.. –

+0

這與現在的問題有關,但非常脆弱。 –

+2

再次更新,這次更少脆弱。 –