如何将此格式的日期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;
}
}
答案 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));