2012-09-17 46 views
1

我試着去解析以下日期:日期與simpledateformatter解析

Wed Aug 27 13:08:45 +0000 2008 

(是對Twitter的API 1.1)

我提出以下格式:

/** 
* Large twitter date format sample: "Wed Aug 27 13:08:45 +0000 2008" 
*/ 
private static final String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy"; 

但它說:

java.text.ParseException: Unparseable date: "Sun Dec 25 14:49:28 +0000 2011" (at offset 0) 
    at java.text.DateFormat.parse(DateFormat.java:626) 

什麼即時做錯了?

謝謝

+0

你的語言環境是什麼?換句話說,如果使用相同的'SimpleDateFormat'來格式化一個'new java.util.Date()',那麼哪種語言就是你得到的字符串。 – SJuan76

+0

兩個日期字符串不匹配 - 異常中的一個和您要解析的日期字符串。請注意日期字符串中的奇數空白:任何前導空格? – pb2q

+0

請參閱http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html – NagarjunaReddy

回答

4

我認爲這是區域設置問題。在我的機器上運行該代碼,我的預期結果毫不例外。

提示:解析爲ENGLISH區域做工不錯

String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy"; 
String twiDate = "Wed Aug 27 13:08:45 +0000 2008"; 
new SimpleDateFormat(LARGE_TWITTER_DATE_FORMAT, Locale.ENGLISH) 
     .parse(twiDate).getHours()); 

解析法國locale導致相同的錯誤你有

String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy"; 
String twiDate = "Wed Aug 27 13:08:45 +0000 2008"; 
System.out.println(new SimpleDateFormat(LARGE_TWITTER_DATE_FORMAT, Locale.FRANCE) 
       .parse(twiDate).getHours()); 
+0

這就是我想要的,我正在創建沒有區域設置的SimpleDateFormat。謝謝! – PaNaVTEC

-1

import java.text.ParseException; 
import java.text.SimpleDateFormat; 


public class Test { 

    private static final String LARGE_TWITTER_DATE_FORMAT = "EEE MMM dd HH:mm:ss Z yyyy"; 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     SimpleDateFormat df = new SimpleDateFormat(LARGE_TWITTER_DATE_FORMAT); 

     try { 
      System.out.println(df.parse("Wed Aug 27 13:08:45 +0000 2008 ")); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
以下作品