yyyy-MM-dd'T'HH:mm:ss和yyyy-MM-dd'T'HH:mm:ssXXX之间的日期格式差异

yyyy-MM-dd'T'HH:mm:ss和yyyy-MM-dd'T'HH:mm:ssXXX之间的日期格式差异

问题描述:

我正在尝试使用以下两种格式解析日期 2014-12-03T10:05:59.5646 + 08:00

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

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

何时我使用 yyyy-MM-dd'T'HH:mm:ss 进行解析,效果很好,但是当我解析 yyyy-MM-dd'T 'HH:mm:ssXXX 抛出 ParseException

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?

注意:我无法使用Joda:(

Note : I cannot use Joda :(

使用此格式 yyyy-MM-dd'T'HH:mm:ss.SSSSX

来自 SimpleDateFormat API

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

使用情况:

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));

输出:

Wed Dec 03 03:06:04 CET 2014