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

Sam*_*ard 8 java date-parsing java-8

我正在改造旧的一些SimpleDateFormat代码以使用新的Java 8 DateTimeFormatter. SimpleDateFormat,因此旧代码在日期之后接受带有其中内容的字符串,如"20130311nonsense".在DateTimeFormat创建我抛出了一个DateTimeParseException为这些字符串,这可能是做正确的事情,但我想保持兼容性.我可以修改我DateTimeFormat接受这些字符串吗?

我目前正在创建它:

DateTimeFormatter.ofPattern("yyyyMMdd")
Run Code Online (Sandbox Code Playgroud)

bow*_*ore 8

使用parse()带有a 的方法ParsePosition,因为当它不读取整个文本时不会失败:

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

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

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