Android将T00:00:00.000Z日期转换为简单可读的日期格式
如何将此日期格式转换为简单格式,如Android将T00:00:00.000Z日期转换为简单可读的日期格式,android,date,Android,Date,如何将此日期格式转换为简单格式,如2016-12-02T00:00:00.000Z,例如2016-12-02 12:00:00 我在谷歌和这个网站上找不到任何解决方案,我是从web服务获得这种格式的 这是我的解决方案,但它不能正常工作,我得到了错误: Method threw 'java.text.ParseException' exception. 我的代码: ISO8601 df = new ISO8601(); if (!channel.getString("createdAt").eq
2016-12-02T00:00:00.000Z
,例如2016-12-02 12:00:00
我在谷歌和这个网站上找不到任何解决方案,我是从web服务获得这种格式的
这是我的解决方案,但它不能正常工作,我得到了错误:
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
转换类ISO8601
日期
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;
}
}
试试这个:
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));
试试这个:
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));
此异常在何处引发?@rafsanahmad007在此行中的形式为`String createdAt=new SimpleDateFormat(“yyyy-mm-dd HH:mm:ss”).format(df.toCalendar(channel.getString(“createdAt”).getTimeInMillis())`此异常在何处引发?@rafsanahmad007在此行中的形式为`String createdAt=new SimpleDateFormat(“yyyy-mm-dd HH:mm:ss”).format(df.toCalendar(channel.getString(“createdAt”).getTimeInMillis())`很乐意帮忙。@naveedahmaddy乐意帮忙。@NaveedAhmad