如何创建一个接受尾随垃圾的DateTimeFormatter?

时间:2015-03-11 21:49:44

标签: java-8 date-parsing

我正在改进旧的SimpleDateFormat代码以使用新的Java 8 DateTimeFormatterSimpleDateFormat,因此旧代码在日期之后接受包含其中内容的字符串,例如" 20130311nonsense"。我创建的DateTimeFormat为这些字符串抛出DateTimeParseException,这可能是正确的做法,但我想保持兼容性。我可以修改DateTimeFormat以接受这些字符串吗?

我目前正在创建它:

DateTimeFormatter.ofPattern("yyyyMMdd")

1 个答案:

答案 0 :(得分:6)

使用ParsePosition的{​​{3}}方法,因为当它不读取整个文本时,它不会失败:

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");

    TemporalAccessor parse = formatter.parse("20140314 some extra text", new ParsePosition(0));
    System.out.println(LocalDate.from(parse));

您传递的ParsePosition实例也将更新解析停止的位置,因此如果您需要对剩余文本执行某些操作,将其分配给变量rpior以调用解析将非常有用。 / p>