web-dev-qa-db-ja.com

yyyy-MM-dd'T'HH:mm:ssとyyyy-MM-dd'T'HH:mm:ssXXXの日付形式の違い

次の2つの形式を使用して日付2014-12-03T10:05:59.5646+08:00を解析しようとしています:

  • 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がスローされます。

日付を解析するための正しい形式はどれですか、またこれら2つの形式の違いは何ですか?

注:Joda :(は使用できません。

6
praveen_mohan

この形式を使用してくださいyyyy-MM-dd'T'HH:mm:ss.SSSSX

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
6
Jordi Castilla

それらは有効なフォーマットです:

yyyy-MM-dd'T'HH:mm:ss.SSSZ       >>>  e.g.: 2001-07-04T12:08:56.235-0700

yyyy-MM-dd'T'HH:mm:ss.SSSXXX     >>>  e.g.: 2001-07-04T12:08:56.235-07:00

編集:
ところで、「X」は(ISO 8601タイムゾーン)を指します

3
Ghayth