JSON date to Java date?

java, json

Solution

That DateTime format is actually ISO 8601 DateTime. JSON does not specify any particular format for dates/times. If you Google a bit, you will find plenty of implementations to parse it in Java.

Here's one

If you are open to using something other than Java's built-in Date/Time/Calendar classes, I would also suggest Joda Time. They offer (among many things) a `ISODateTimeFormat` to parse these kinds of strings.

Problem

I could not find this anywhere. I fetch some JSON from an API that returns standard JSON dates. You can see the format by running this code in a JavaScript console: ``` > new Date().toJSON(); "2010-10-27T11:58:22.973Z" ``` Well, actually, the API I'm working with is not returning the millisecond part, and sometimes it returns a timezone instead of `Z`, so dates can look like any one of these: - `2010-10-27T11:58:22Z` - `2010-10-27T11:58:22+03:00` Parsing these kinds of dates is somewhat cumbersome. Is there any way to parse these kinds of dates, using `org.json`? My current solution is: ``` public static Date parseDateTime(String dateString) { if (dateString == null) return null; DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ"); if (dateString.contains("T")) dateString = dateString.replace('T', ' '); if (dateString.contains("Z")) dateString = dateString.replace("Z", "+0000"); else dateString = dateString.substring(0, dateString.lastIndexOf(':')) + dateString.substring(dateString.lastIndexOf(':')+1); try { return fmt.parse(dateString); } catch (ParseException e) { Log.e(Const.TAG, "Could not parse datetime: " + dateString); return null; } } ``` Ugh!

Original source

Related problems