-1

parseBest メソッドの仕組みについて少し混乱しています。フォーマッタ パターンがあり、次のように parseBest メソッドで日付を解析しています。

    DateTimeFormatter parser = DateTimeFormatter.ofPattern("yyyy-MM-dd['T'HH:mm:ss[Z]]");
    parseMyDate(parser, "2016-12-07");
    parseMyDate(parser, "2016-12-07T15:31:12");
    parseMyDate(parser, "2016-12-07T15:31:12-0500");
    parseMyDate(parser, "2016-12-07Hello");

    public static void parseMyDate(DateTimeFormatter formatter, String parseText) {
    try {
      TemporalAccessor ta = formatter.parseBest(parseText, 
                                                OffsetDateTime::from,
                                                LocalDateTime::from, 
                                                LocalDate::from);
      if (ta instanceof OffsetDateTime) {
        OffsetDateTime odt = OffsetDateTime.from(ta);
        System.out.println("OffsetDateTime: " + odt);
      } else if (ta instanceof LocalDateTime) {
        LocalDateTime ldt = LocalDateTime.from(ta);
        System.out.println("LocalDateTime: " + ldt);
      } else if (ta instanceof LocalDate) {
        LocalDate ld = LocalDate.from(ta);
        System.out.println("LocalDate: " + ld);
      } else {
        System.out.println("Parsing returned: " + ta);
      }
    } catch (DateTimeParseException e) {
      System.out.println("Here in Exception : "+e.getMessage());
      //e.printStackTrace();
    }
  }

しかし、すべてのメソッド呼び出しについて、次のように同じ例外が発生しました。

java.time.format.DateTimeParseException: テキスト '2016-12-07Hello' は、java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949) のインデックス 8 で java.time.format.DateTimeFormatter.parseBest で解析できませんでした(DateTimeFormatter.java:1897) com.my.j8.DataTime.parseStr(DataTime.java:164) で com.my.j8.DataTime.main(DataTime.java:158)

次のようにパターンを変更してみました: DateTimeFormatter parser = DateTimeFormatter.ofPattern("yyyy-MM-dd");

しかし、まだ運がありません。なにか提案を?

4

1 に答える 1