If you don't need to do some operation/manipulation on the Date
before printing it in correct format, then you can just directly transform the string into yyyy-MM-dd HH:mm
with this:
String date = "2014-10-13T10:41:22.863+8:00";
date = date.substring(0, 16); // 2014-10-13T10:41, remove value after minutes
date = date.replace("T", " "); // 2014-10-13 10:41, replace the 'T' character
System.out.println(date); // 2014-10-13 10:41
Else, if you want to parse it beforehand, then change the pattern to yyyy-MM-dd'T'HH:mm
(note the additional of string constant 'T'
).
String date = "2014-10-13T10:41:22.863+8:00";
// parse the String to Date
SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
Date dateTime = null;
try {
dateTime = sourceFormat.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(dateTime.toString()); // Mon Oct 13 10:41:00 SGT 2014
// print the Date in expected format
SimpleDateFormat targetFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
System.out.println(targetFormat.format(dateTime)); // 2014-10-13 10:41
The reason you got ParseException
is because the format you use to parse (yyyy-MM-dd HH:mm
) is not the same as the source (yyyy-MM-dd'T'HH:mm ...
). Your SimpleDateFormatter
expected whitespace instead of character 'T' after the date.