我正在改装一些旧的SimpleDateFormat
代码以使用新的Java 8 DateTimeFormatter
。 SimpleDateFormat
(因此是旧代码)接受日期之后的字符串,例如“ 20130311nonsense”。我创建的DateTimeFormat
会为这些字符串抛出一个DateTimeParseException
,这也许是正确的做法,但我想保持兼容性。我可以修改我的DateTimeFormat
以接受这些字符串吗?
我目前正在这样创建它:
DateTimeFormatter.ofPattern("yyyyMMdd")
最佳答案
使用采用parse()
的ParsePosition
方法,因为当不读取整个文本时,它不会失败:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
TemporalAccessor parse = formatter.parse("20140314 some extra text", new ParsePosition(0));
System.out.println(LocalDate.from(parse));
您传递的
ParsePosition
实例也将以解析停止的位置进行更新,因此,如果您需要对剩余文本进行某些操作,则在调用parse
之前将其分配给变量将很有用。关于java - 如何制作一个可以接受结尾垃圾的DateTimeFormatter?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56601233/