【发布时间】:2020-12-30 08:06:03
【问题描述】:
我想在 Java 中解析自定义的多种日期格式。这是我的代码
场景 1: 模式顺序:
- yyMMdd'h'HH
- yyMMdd
DateTimeFormatter 格式化程序 = new DateTimeFormatterBuilder() .appendOptional(DateTimeFormatter.ofPattern("yyMMdd'h'HH")) .appendOptional(DateTimeFormatter.ofPattern("yyMMdd")).toFormatter();
作品:
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
不起作用:
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
场景 2: 模式顺序:
- yyMMdd
- yyMMdd'h'HH
DateTimeFormatter 格式化程序 = new DateTimeFormatterBuilder() .appendOptional(DateTimeFormatter.ofPattern("yyMMdd")).toFormatter(); .appendOptional(DateTimeFormatter.ofPattern("yyMMdd'h'HH"))
不起作用:
String dateString1 = "201028h05";
LocalDateTime date1 = LocalDateTime.parse(dateString1, formatter);
作品:
String dateString2 = "201028";
LocalDateTime date1 = LocalDateTime.parse(dateString2, formatter);
如何使其适用于两种日期模式,而不考虑任何输入模式顺序。我不想为此使用任何外部依赖项。
【问题讨论】:
-
如果交换插入模式的顺序会怎样?从最通用到更具体(而不是从更具体到最通用)?
-
如果我交换订单就可以了。但是输入值应该与第一个模式匹配,如果不匹配,则会抛出错误。
-
不确定我是否理解,但第二个
dateString1与模式yyMMdd'h'HH不匹配,因为它缺少整个'h'HH组件。您需要将h00之类的东西添加到第二个dateString1中才能被第一个模式捕获。 -
@npinti 用场景更新问题
-
当字符串中没有小时时,您想要或期望什么结果?