0

ical4j 1.0.6 を使用して、"DTSTART..." 文字列から DateTime をインスタンス化しようとしています。コンストラクターは、 DateTime ドキュメントおよびical4j wikiで有効としてリストされている例に対しても ParserException をスローしています。

      String date = "DTSTART;TZID=US-Eastern:19970714T133000";
      try {
        DateTime dt = new DateTime(date);
      } catch (ParseException e) {
        e.printStackTrace(); //always thrown
      }

java.text.ParseException: Unparseable date: "DTSTART;TZID=US-Eastern:19970714T133000" (at offset 0)

KEY_RELAXED_PARSING を true に設定しようとしましたが、役に立ちませんでした。

私は何を間違っていますか?

4

2 に答える 2

1

javadoc を見ると、コンストラクターDateTime(String)は次のように述べています。

指定された文字列表現をデフォルト (ローカル) timezone で解析して、新しい DateTime インスタンスを構築します。

したがって、文字列の「DSTART」と「TZID」の部分が多すぎると思います。

特定の TimeZone を設定するには、セクションタイムゾーンの操作 をお読みください。

于 2015-07-24T11:47:13.460 に答える
0

私はこのコードを使用することになった

      String[] parts = property.split(":");
      if (parts.length > 1) {
        try {
          String timezone = parts[0].replace("DTSTART;TZID=", "");

          DtStart start = new DtStart();
          start.getParameters().add(Value.DATE_TIME);
          start.getParameters().add(new TzId(timezone));
          start.setValue(parts[1]);
        } catch (ParseException e) {
          e.printStackTrace();
        }
      }
于 2015-07-24T14:02:20.800 に答える