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)说:

通过解析默认(本地)时区中的指定字符串表示来构造一个新的 DateTime 实例。

所以我猜字符串的“DSTART”和“TZID”部分太多了。

要设置特定的时区,请阅读使用时区部分。

于 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 回答