2011-04-12 48 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