从json解析时间。具体格式

时间:2012-12-09 08:36:18

标签: android json

我收到以下JSON,我可以解析说明和日期。我一直试图解析时间,但我尝试的一切都让我输出不好的东西。

时间对象应该说5:30但我不知道我是否能够解析该格式。我以为是public String format3339 (boolean allDay) 我发布了JSON输入,我的JSON解析和输出。

输入

{"object":[{"description":"blah blah blah","date":"2012-12-11","time":"2000-01-01T05:30:00Z"}]}

主要是我担心"time":"2000-01-01T05:30:00Z"

解析

JSONArray arr = null;
list = new ArrayList<HashMap<String, String>>();
}
for (int i = 0; i < arr.length(); i++) {
    JSONObject d = arr.getJSONObject(i);
    Time time = new Time();
    String etime = d.getString(TIME_TAG);
    String description = d.getString(DESCRIPTION_TAG);
    String date = d.getString(DATE_TAG);
            //************************************************************************
            //********I suspect that i might be converting the time object incorrectly but whatever 
            //********i put here either does not work or gives me bad output. 
    Boolean mtime = time.parse3339(etime);
    if (mtime == true) {
        etime = time.toString();
    }
            //************************************************************************
    HashMap<String, String> map = new HashMap<String, String>();
    map.put(DATE_TAG, date);
    map.put(DESCRIPTION_TAG, description);
    map.put(TIME_TAG, etime);

    list.add(map);

OutPut-我不明白这个输出我认为输入是3339格式但输出很难处理。我想我可以让解析器从给定的字符串中解析出530,但我认为我的输出将是toString()操作的YYYYMMDDTHHMMSS格式。

20000101T053000UTC(0,0,0,-1,946704600)

编辑::这是我一起砍下来以轻松获得我想要的东西。它现在有效。

JSONArray arr = null;
list = new ArrayList<HashMap<String, String>>();
}
for (int i = 0; i < arr.length(); i++) {
    JSONObject d = arr.getJSONObject(i);
    String etime = d.getString(TIME_TAG);
    String description = d.getString(DESCRIPTION_TAG);
    String date = d.getString(DATE_TAG);

        if (eTime.charAt(11) == '0')
    eTime = eTime.substring(12, 16);
    else
    eTime = eTime.substring(11, 16);

            HashMap<String, String> map = new HashMap<String, String>();
    map.put(DATE_TAG, date);
    map.put(DESCRIPTION_TAG, description);
    map.put(TIME_TAG, etime);

    list.add(map);

2 个答案:

答案 0 :(得分:0)

解决大多数Json格式问题的最佳方法是反过来:创建时间,转换为Json对象并研究字符串表示。我想你会很快找到你的问题。

关于您的问题:您发布的DateTime格式是ISO 8601.JSON没有为日期/时间指定此格式。

您可以尝试使用Joda Time来获取Json可以解析的正确日期类型。

ISO time format

或者使用GSON库的其他好方法。

答案 1 :(得分:0)

您拥有的时间格式是SQL。您可以使用java.SQL.date类解析它。