是否有一种方法可以编写解析器“任意”两个可选部分之一的DateTimeFormatter模式?比如(MMMM-d-(yy OR yyyy))?
举个例子:
val formatter = DateTimeFormatter.ofPattern("MMMM-d-[yyyy][yy]");
System.out.println(formatter.parse("June-27-2022")); // {},ISO resolved to 2022-06-27
System.out.println(formatter.parse("June-27-22")); // {},ISO resolved to 2022-06-27
System.out.println(formatter.parse("June-27-")); // {MonthOfYear=6, DayOfMonth=27},ISO我想解析短(yy)或长(yyyy)年格式。我的模式的问题是,在解析最后一个示例时,没有定义模式的任何一个可选部分。
发布于 2022-06-29 08:02:20
我同意@OleV.V提出的解决方案:
val formatter = DateTimeFormatter.ofPattern("MMMM-d-[yyyy][yy]");
System.out.println(LocalDate.parse("June-27-2022", formatter));
System.out.println(LocalDate.parse("June-27-22", formatter));
System.out.println(LocalDate.parse("June-27-", formatter)); // throws an Exception发布于 2022-06-27 15:01:52
一种选择是创建多个格式化程序的列表,每个格式化程序都有自己的模式。轮流试一试,直到其中一个成功为止。如果没有成功地解析输入字符串,则给出一个错误。
https://stackoverflow.com/questions/72774255
复制相似问题