Date formats difference between yyyy-MM-dd'T'HH:mm:ss and yyyy-MM-dd'T'HH:mm:ssXXX

praveen_mohan picture praveen_mohan · Sep 21, 2015 · Viewed 37.2k times · Source

I am trying to parse a date 2014-12-03T10:05:59.5646+08:00 using these two formats:

  • yyyy-MM-dd'T'HH:mm:ss
  • yyyy-MM-dd'T'HH:mm:ssXXX

When I parse using yyyy-MM-dd'T'HH:mm:ss it works fine, but when I parse yyyy-MM-dd'T'HH:mm:ssXXX a ParseException is thrown.

Which is the correct format to parse the date and also what exactly is the difference between these two formats?

Note : I cannot use Joda :(

Answer

Jordi Castilla picture Jordi Castilla · Sep 21, 2015

use this format yyyy-MM-dd'T'HH:mm:ss.SSSSX

From SimpleDateFormat API

//Letter    Date or Time Component  Presentation        Example
  S         Millisecond             Number              978
  X         Time zone               ISO 8601 time zone  -08; -0800; -08:00

USE:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSX");
String date = "2014-12-03T10:05:59.5646+08:00";
System.out.println(format.parse(date));

OUTPUT:

Wed Dec 03 03:06:04 CET 2014