【发布时间】:2015-07-19 20:15:06
【问题描述】:
官方航空公司的出发和到达时间通常以小时和分钟为单位提供。以下是典型的例子:
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 的数据并且希望避免额外的传递。
感谢您的帮助。
更新:一个明显的解决方案是在同一通道中添加零。例如,使用番石榴:
stringValue = Strings.padStart(stringValue, 4, '0');
LocalTime.parse(stringValue, TypeUtils.timeFormatter);
仍然很好奇是否有办法仅使用标准格式代码(如 hh 和 mm)来执行此操作。
【问题讨论】:
-
好像是作业。你有没有尝试过?
-
哈哈。不,这不是家庭作业,但我有点睡眠不足。这将起作用, Strings.padStart(stringValue, 4, '0');在调用格式化程序之前。将更新问题。