我有一个用户输入字段,并希望解析他的日期,无论他在。
用户可能提供带有前导零或不带前导零的日期,因此我希望能够解析这样的输入
02.05.2019
还有这个
2.5.2019
但据我所知,没有办法使前导零可选,要么总是有2个数字,如01,03,12等,或只有必要的数字,如1,3,12。
显然,我必须决定是否允许前导零,但真的没有办法使前导零可选吗?
我测试了一个包含前导零dd.MM.uuuu的模式,我测试了一个不包含前导零d.M.uuuu的模式,当我解析错误的输入和错误的模式时,抛出了异常。
因此,我的问题是,是否有一种方法,使前导零可选。
3条答案
按热度按时间qqrboqgw1#
如果你知道的话,这是微不足道的,一个模式字母,例如
d
或M
,可以接受一个或两个数字(或者年份最多9个数字)。输出:
我在文档中搜索了这些信息,但没有找到。我认为这没有得到很好的记录。
vwhgwdsa2#
您可以使用如下所示的自定义格式创建DateTimeFormatter
然后,如果日期提供1或2位数的日和月,您就可以解析日期。
我在这里使用了新的java.time包中的LocalDate,所以我假设您的java版本是最新的。
yacmzcpb3#
您建议的日期格式应该可以使用-就像下面的测试一样:
DateTimeFormatter在比较中不接受年的前导零,但日和月的前导零不是问题: