3

次の日付/時刻のフォーマットに問題があります:

2013-01-10T17:04:24.3787635-02:00

今、私2013-01-10は日付であることを理解しています(明らかに)。

17:04:24.3787635おそらく時間ですが、ドットの後の数字が何を意味するのかわかりません。

-02:00タイムゾーン(GMT)だと思います。

これをJavaで解析するにはどうすればよいですか? (おそらくJodaTimeを使用しています)。

4

4 に答える 4

1

JodaTimeを使用して、この日付を解析できます。

String time = "2013-01-10T17:04:24.3787635-02:00";
DateTimeFormatter df = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ");
DateTime dateTime = df.parseDateTime(time);

ドット()の後の数字は、DateTimeFormat.で示される秒の端数です。タイムゾーンパターンを表します。SJodaTime's Z

于 2013-03-14T21:10:14.400 に答える
1

このパターンを使用してみてください:

"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"

この形式で日付を解析できるのは次のとおりです。

2001-07-04T12:08:56.235-07:00

ただし、3787635ソース文字列では面倒です。ミリ秒のようには見えません。

java.text.SimpleDateFormatパターンの詳細については、 を参照してください。

DatatypeConverter.parseDateTimeどちらがオブジェクトを返すかを試すこともできjava.util.Calendarます。

DatatypeConverter.parseDateTime("2013-01-10T17:04:24.3787635-02:00").getTime()

上記のステートメントは、エラーなしで実行されます。

于 2013-03-14T20:59:03.757 に答える
0

この形式は、javax.xml.XMLGregorianCalendarでのみ正しく解析できます。SimpleDateFormatは、SSSを秒の小数部分としてではなく、ミリ秒数として受け入れるため、使用できません。

    String s = "2013-01-10T17:04:24.3787635-02:00";
    DatatypeFactory dtf = DatatypeFactory.newInstance();
    Date date = dtf.newXMLGregorianCalendar(s).toGregorianCalendar().getTime();
于 2013-03-14T21:13:17.610 に答える
0

時間文字列の形式は ISO8601 形式です。JodaTime クラスISODateTimeFormatはその形式を直接サポートします。ただし、ミリ秒を超える精度は失われます。

String time = "2013-01-10T17:04:24.3787635-02:00";
DateTime dateTime = ISODateTimeFormat.dateTime().parseDateTime(time);
于 2013-03-14T21:08:54.220 に答える