0

DateTimeFormat 形式で解析する文字列を取得できません。入力文字列は次のとおりです。 Thu Apr 07 00:00:00 EDT 2011

そして私のフォーマット:
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

何が足りないの!? 助けてくれてありがとう!

-エリック

4

1 に答える 1

0

フォーマット文字列の zzz には数値 (オフセット) が必要です。あなたの日付には EDT があります。タイムゾーンには v を使用する必要があります。

于 2011-04-12T03:32:01.493 に答える