我正在改进旧的SimpleDateFormat
代码以使用新的Java 8 DateTimeFormatter
。 SimpleDateFormat
,因此旧代码在日期之后接受包含其中内容的字符串,例如" 20130311nonsense"。我创建的DateTimeFormat
为这些字符串抛出DateTimeParseException
,这可能是正确的做法,但我想保持兼容性。我可以修改DateTimeFormat
以接受这些字符串吗?
我目前正在创建它:
DateTimeFormatter.ofPattern("yyyyMMdd")
答案 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>