Sarah Vessels Sarah Vessels - 7 months ago 20
Java Question

What is this date format? 2011-08-12T20:17:46.384Z

I have the following date:

2011-08-12T20:17:46.384Z
. What format is this? I'm trying to parse it with Java 1.4 via
DateFormat.getDateInstance().parse(dateStr)
and I'm getting


java.text.ParseException: Unparseable date: "2011-08-12T20:17:46.384Z"


I think I should be using SimpleDateFormat for parsing, but I have to know the format string first. All I have for that so far is
yyyy-MM-dd
, because I don't know what the
T
means in this string--something time zone-related? This date string is coming from the
lcmis:downloadedOn
tag shown on Files CMIS download history media type.

Answer

The T is just a literal to separate the date from the time, and the Z means "Zulu time" (UTC). If your strings always have a "Z" you can use:

SimpleDateFormat format = new SimpleDateFormat(
    "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));

Or using Joda Time, you can use ISODateTimeFormat.dateTime().