Java将8601格式的字符串解析为更易读的日期解析错误

时间:2014-08-12 05:01:43

标签: java date datetime iso8601

我正在获取日期并尝试将它们解析为更具可读性的日期,但我不断收到解析错误,格式化对我来说是正确的,但它不起作用

 DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'");
 DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
    try {
        Date date1 = df.parse(purchase.getRedeem_at());

        String readableDate = df2.format(date1);

        b.append(readableDate);

    } catch (ParseException e) {

        e.printStackTrace();
    }

我尝试解析的示例字符串是

2014-08-12T02:30:00Z

3 个答案:

答案 0 :(得分:2)

您错过了第一个格式字符串中的秒部分。

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
//                                                       ^

答案 1 :(得分:2)

joda将parse this format开箱即用:

DateTimeFormatter fmt = ISODateTimeFormat.dateTimeNoMillis();
DateTime ourDate = fmt.parseDateTime(jdkDate);

如果您还有其他问题,请发表评论。

答案 2 :(得分:1)

你应该添加“ss”

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");