0

この日付を変換しようとしています 2013-03-04T12:08:52.74+08:00

formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Date date = formatter.parse(dateresult);

しかし、それは例外で終わります

03-07 19:17:05.493: W/System.err(2006): java.text.ParseException: Unparseable date: "2013-03-04T12:08:52.74+08:00" (at offset 19)

私はこれを試しました。しかし、同じ例外が発生しました。これを達成するための別の(おそらくより良い)方法を知っている人はいますか?

4

4 に答える 4

1

joda-time を使用できます。ISO8601規格に対応しています。

joda-time マニュアル

サンプル:

DateTime dt = new DateTime("2013-03-04T12:08:52.74+08:00");
System.out.println(dt.toString());
DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
System.out.println(
        fmt.parseDateTime("2013-03-04T12:08:52.74+08:00"));
于 2013-03-07T14:09:06.617 に答える
0

また、@baraky の回答に加えて、入力日付のタイム ゾーン形式が形式文字列の仕様に準拠していません。フォーマット文字列に 'Z' (リテラル文字 Z) が含まれています。入力文字列の形式は X のようです。したがって、次を使用することをお勧めします。

formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSX");

于 2013-03-07T14:08:45.627 に答える
0

使用する:

formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SS'Z'");

ミリ秒 (.74) を含めるには

于 2013-03-07T14:01:03.347 に答える
0

baraky が指摘したようにミリ秒を見逃していることに加えて、Java で日付を解析するときに ISO-8601 タイムゾーンの問題にも遭遇します。それはこの質問で扱われました。

于 2013-03-07T14:06:27.947 に答える