如何制作接受尾随垃圾的 DateTimeFormatter?
How can I make a DateTimeFormatter that accepts trailing junk?
我正在改造一些旧的 SimpleDateFormat
代码以使用新的 Java 8 DateTimeFormatter
。 SimpleDateFormat
,因此旧代码接受日期之后包含内容的字符串,例如“20130311nonsense”。我创建的 DateTimeFormat
为这些字符串抛出 DateTimeParseException
,这可能是正确的做法,但我想保持兼容性。我可以修改 DateTimeFormat
以接受这些字符串吗?
我目前是这样创建的:
DateTimeFormatter.ofPattern("yyyyMMdd")
使用采用 ParsePosition
的 parse()
方法,因为它不会在不读取整个文本时失败:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
TemporalAccessor parse = formatter.parse("20140314 some extra text", new ParsePosition(0));
System.out.println(LocalDate.from(parse));
您传递的 ParsePosition
实例也将使用解析停止的点进行更新,因此如果您需要对剩余的文本执行某些操作,那么将其分配给变量会很有用在调用 parse
.
之前
我正在改造一些旧的 SimpleDateFormat
代码以使用新的 Java 8 DateTimeFormatter
。 SimpleDateFormat
,因此旧代码接受日期之后包含内容的字符串,例如“20130311nonsense”。我创建的 DateTimeFormat
为这些字符串抛出 DateTimeParseException
,这可能是正确的做法,但我想保持兼容性。我可以修改 DateTimeFormat
以接受这些字符串吗?
我目前是这样创建的:
DateTimeFormatter.ofPattern("yyyyMMdd")
使用采用 ParsePosition
的 parse()
方法,因为它不会在不读取整个文本时失败:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
TemporalAccessor parse = formatter.parse("20140314 some extra text", new ParsePosition(0));
System.out.println(LocalDate.from(parse));
您传递的 ParsePosition
实例也将使用解析停止的点进行更新,因此如果您需要对剩余的文本执行某些操作,那么将其分配给变量会很有用在调用 parse
.