web-dev-qa-db-ja.com

java.text.ParseException:解析不能な日付 "yyyy-MM-dd'T'HH:mm:ss.SSSZ"-SimpleDateFormat

この例外のバグを見つけるのに助けていただければ幸いです:

_Java.text.ParseException: Unparseable date: "2007-09-25T15:40:51.0000000Z"
_

そして次のコード:

_SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = sdf.parse(timeValue);
long mills = date.getTime();
this.point.time = String.valueOf(mills);
_

Date date = sdf.parse(timeValue);でexpcetionをスローします。

_timeValue = "2007-09-25T15:40:51.0000000Z";_、例外として。

ありがとう。

33
Jacob

Zはタイムゾーン文字を表します。引用する必要があります:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
69
Reimeus

Java 7 では、Xパターンを使用して、特別なZ(UTC)値を含むISO8601タイムゾーンに一致させることもできます。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSX");
Date date = sdf.parse("2007-09-25T15:40:51.0000000Z");

ただし、パターンにはミリ秒文字の正確な数が必要であるようです。これは、「Z」文字パターンには必要なく、むしろ不便です。これは、ISO8601の定義にも「2桁の時間」が含まれているためだと思います。これは単なる数字であり、パーサーによって前のミリ秒と区別することはできません。

したがって、このバージョンは、秒単位の精度のタイムスタンプには適していますが、ミリ秒の精度にはなりません。

3
DNA