【问题标题】:Can't parse Date with DateTimeFormat无法使用 DateTimeFormat 解析日期
【发布时间】:2011-04-12 02:55:30
【问题描述】:

我无法获取要由 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

我错过了什么!?感谢您的帮助!

-埃里克

【问题讨论】:

  • 我不认为zzz 会正确匹配时区

标签: json parsing datetime-format


【解决方案1】:

zzz 在您的格式字符串中需要一个数字(偏移量)。你的日期有美国东部时间。您需要使用 v 作为时区。

【讨论】:

  • 感谢您的回复。我毫不怀疑这是我的代码中的 1 个错误,但它仍然无法正常工作。我已经更新了问题以包含您的修复程序
  • 我最终弄清楚了如何防止日期变成这种格式。所以现在它可以工作了,使用不同的源字符串(显然是解析模式)。
  • 太好了,您能否将我的答案标记为答案,或者创建一个描述您的修复的答案并将其标记为已回答?
猜你喜欢
  • 1970-01-01
  • 2021-06-19
  • 2021-02-09
  • 2018-02-23
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
相关资源
最近更新 更多