我的消费者收到的时间格式是String
有价值20/5/14_9:22:25
or 20/5/14_9:22:5
or 20/5/14_12:22:25
or 20/10/14_9:2:25
etc...
以上所有内容都有非常不同的日期时间模式yy/MM/dd_HH:mm:ss
并且可以存在多种具有单位数日、月、小时、分钟和/或秒的可能性。
有没有我可以使用的主模式DateTimeFormatter.ofPattern(format)
哪个适用于上述所有模式?
图案看起来都一样
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yy/M/dd_H:mm:s");
LocalDate parsedDate = LocalDate.parse("20/5/14_9:22:25", formatter);
System.out.println(parsedDate);
parsedDate = LocalDate.parse("20/5/14_9:22:5", formatter);
System.out.println(parsedDate);
parsedDate = LocalDate.parse("20/10/14_9:22:25", formatter);
System.out.println(parsedDate);
output
2020-05-14
2020-05-14
2020-10-14
违反直觉但非常实用,例如对于数字第一个模式字母M
or H
,并不意味着一位数字,而是“尽可能多的数字”。所以M
解析两者5
and 10
(乃至05
). H
parses 9
and 12
等。通过对比两个模式字母,例如MM
or HH
, 正好表示两位数,因此无法解析 5 的月份或 9 的小时。它需要05
or 09
。或者正如文档所说:
Number:如果字母数为 1,则使用最少的位数输出该值,并且不进行填充。否则,
位数用作输出字段的宽度,其中
必要时用零填充值。 ……
因此,如果您需要接受一位数的月份日或一位数的分钟数,也可以使用一个模式字母d
and m
, 分别。
但有一个小时29
(正如您在问题的早期版本中所做的那样)是错误的。
文档链接: DateTimeFormatter
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)