官方航空公司的出发和到达时间通常以小时和分钟为单位。以下是典型的例子:
1830 - 6:30 pm
730 - 7:30 am
30 - 30 minutes after midnight (ie 12:30 am)
前两个可以使用带有HHmm和Hmm的DateTimeFormatter进行解析。第三个导致解析错误,并且尝试仅用几分钟(mm)解析它会导致不同的错误:无法从TemporalAccessor获取LocalTime:{MinuteOfHour = 30}
约束:
我想提供一个通用的解决方案,如果可能的话,使用格式化程序处理这个问题,因为我不想破解所有其他时间变体的解析。
显然我可以预先处理传入的数据以预先缺少零,但我有很多GB的数据,并希望避免额外的传递。
感谢您的帮助。
更新:一个明显的解决方案是在同一个传递中添加零。例如,使用Guava:
stringValue = Strings.padStart(stringValue, 4, '0');
LocalTime.parse(stringValue, TypeUtils.timeFormatter);
仍然很好奇是否有办法只使用标准的格式代码,如hh和mm。
答案 0 :(得分:5)
好吧,您可以使用xml
创建默认值:
DateTimeFormatterBuilder