4

DB から取得したタイムゾーンを使用して、タイムスタンプ形式の文字列を解析しようとしています。文字列は次のとおりです。

   SimpleDateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSZ");

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
    Date d1 = mdyFormat.parse("2014-04-01 15:19:49.31146+05:30");

    String mdx = sdf.format(d1);

    System.out.println(mdx);

問題は、次のようなエラーが表示されることです。

Exception in thread "main" java.text.ParseException: Unparseable date: "2014-04-01 15:19:49.31146+05:30"
    at java.text.DateFormat.parse(DateFormat.java:357)
    at com.karthik.Timestampvalidate.main(Timestampvalidate.java:31)

誰もこれを修正する方法を知っていますか?

4

2 に答える 2

10

X代わりに使用する必要がありますZ

SimpleDateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSX");

詳細については、javadocを参照してください。

注: Java 7 以降でのみ使用できます。

于 2014-04-01T10:41:52.200 に答える
5

Java 8 で新しい JSR 310 日付/時刻 API を使用できるようになった場合は、このXXX形式を使用してタイムゾーンを解析できます。X使用している特定のコロン区切りのオフセットを取得するには、3 つの s が必要です。

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSXXX");
TemporalAccessor dateTime = formatter.parse("2014-04-01 15:19:49.31146+05:30");
// returns: {OffsetSeconds=19800},ISO resolved to 2014-04-01T15:19:49.311460
于 2014-04-01T10:48:29.567 に答える