2011-04-12 93 views
0

我無法獲取用DateTimeFormat格式解析的字符串。這裏是輸入字符串: Thu Apr 07 00:00:00 EDT 2011無法使用DateTimeFormat解析日期

和我的格式:
DateTimeFormat.getFormat("EEE MMM dd HH:mm:ss vvv yyyy");

我讀過,這是正確的格式字符串,但對我來說這不是正確地分析。下面是代碼:

public class YcDateColumn extends TextColumn<JSONObject> { 

    DateTimeFormat fmtC = DateTimeFormat.getFormat("dd-MMM-yyyy"); 
    DateTimeFormat fmtB = DateTimeFormat.getFormat("MMM dd, yyyy hh:mm:ss a"); 
    DateTimeFormat fmtA = DateTimeFormat.getFormat("EEE MMM dd HH:mm:ss vvv yyyy"); 


    private String key = null; 
    private String def = null; 

    public YcDateColumn(String aKey, String aDefault) { 
     super(); 
     key = aKey; 
     def = aDefault; 
    } 

    public YcDateColumn(String aKey) { 
     this(aKey, null); 
    } 

    @Override 
    public String getValue(JSONObject aObj) { 
      System.out.println("YcDateColumn - object= " + aObj); 
     JSONValue mVal = aObj.get(key); 
     if (mVal == null) 
      return def; 
     System.out.println("YcDateColumn - about to parse string: " + mVal.isString().stringValue()); 
     return fmtC.format(fmtA.parse(mVal.isString().stringValue())); 
    } 

} 

最後的System.out打印本文(字符串解析):YcDateColumn - about to parse string: Thu Apr 07 00:00:00 EDT 2011

我在想什麼!?謝謝您的幫助!

-Eric

+0

我不'zzz'會正確匹配時區 – AdamH 2011-04-12 03:00:51

回答

0

ZZZ在格式字符串需要一個數字(偏移量)。你的日期有EDT。您需要在時區中使用v。

+0

謝謝你的迴應。我毫不懷疑這是我的代碼中的1錯誤,但它仍然無法正常工作。我已經更新了這個問題,包括你的修復,儘管 – HeelToeHero 2011-04-12 05:34:13

+0

我最終弄清楚瞭如何防止日期進入這種格式。所以現在它工作,使用不同的源字符串(顯然解析模式)。 – HeelToeHero 2011-04-12 15:58:19

+0

優秀,你可以標記我的答案作爲答案,或創建一個答案描述你的修復,並標記爲答案? – 2011-04-12 20:46:28