Android将T00:00:00.000Z日期转换为简单的可读日期格式

时间:2017-01-14 06:39:00

标签: android date

如何将此格式的日期2016-12-02T00:00:00.000Z转换为简单格式,例如2016-12-02 12:00:00

我在google和本网站上找不到任何解决方案,我从网络服务中获取此格式。

这是我的解决方案,但它没有正常工作,我收到了错误:

Method threw 'java.text.ParseException' exception.

我的代码:

ISO8601 df = new ISO8601();
if (!channel.getString("createdAt").equals("0000-00-00 00:00:00") && channel.getString("createdAt").length() > 0) {
    Calendar ca        = df.toCalendar("2016-12-02T00:00:00.000Z");
    String   createdAt = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss").format(df.toCalendar(channel.getString("createdAt")).getTimeInMillis());
    info.setCreated_at(createdAt);
}

ISO8601类转换ISO 8601日期

public final class ISO8601 {
    /**
     * Transform Calendar to ISO 8601 string.
     */
    public static String fromCalendar(final Calendar calendar) {
        Date date = calendar.getTime();
        String formatted = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
                .format(date);
        return formatted.substring(0, 22) + ":" + formatted.substring(22);
    }

    /**
     * Get current date and time formatted as ISO 8601 string.
     */
    public static String now() {
        return fromCalendar(GregorianCalendar.getInstance());
    }

    /**
     * Transform ISO 8601 string to Calendar.
     */
    public static Calendar toCalendar(final String iso8601string)
            throws ParseException {
        Calendar calendar = GregorianCalendar.getInstance();
        String   s        = iso8601string.replace("Z", "+00:00");
        try {
            s = s.substring(0, 22) + s.substring(23);  // to get rid of the ":"
        } catch (IndexOutOfBoundsException e) {
            throw new ParseException("Invalid length", 0);
        }
        Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(s);
        calendar.setTime(date);
        return calendar;
    }
}

1 个答案:

答案 0 :(得分:2)

试试这个:

 String  createdAt = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").format(df.toCalendar(channel.getString("createdAt")).getTimeInMillis());

这是一个例子:

String string = "2016-12-02T00:00:00.000Z";
String defaultTimezone = TimeZone.getDefault().getID();
Date date = (new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")).parse(string.replaceAll("Z$", "+0000"));

Log.i("string: " + string);
Log.i("defaultTimezone: " + defaultTimezone);
Log.i("date: " + (new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")).format(date));
相关问题