为了账号安全,请及时绑定邮箱和手机立即绑定

如何在可选的 DateTime-Pattern 中设置前导零

如何在可选的 DateTime-Pattern 中设置前导零

手掌心 2023-05-17 17:42:11
我有一个用户输入字段,想解析他的日期,无论他输入什么。用户可能会提供他的日期前导零或不带前导零,所以我希望能够解析这样的输入02.05.2019还有这个2.5.2019但据我所知,没有办法让前导零成为可选的,要么总是有 2 位数字,如 01、03、12 等,要么只有必要的数字,如 1、3、12。所以显然我必须决定是否允许前导零,但是真的没有办法让前导零可选吗?好吧,我测试了一个包含前导零 dd.MM.uuuu 的模式,并测试了一个不包含前导零 dMuuuu 的模式,当我用错误的模式解析错误的输入时,抛出了异常。因此我的问题是是否有办法让前导零成为可选的。
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

当您知道时,这是微不足道的。一个模式字母,例如dor M,将接受一位或两位数字(或年份最多 9 位数字)。


    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("d.M.u");

    System.out.println(LocalDate.parse("02.05.2019", dateFormatter));

    System.out.println(LocalDate.parse("3.5.2019", dateFormatter));

    System.out.println(LocalDate.parse("4.05.2019", dateFormatter));

    System.out.println(LocalDate.parse("06.5.2019", dateFormatter));

    System.out.println(LocalDate.parse("15.12.2019", dateFormatter));

输出:


2019-05-02

2019-05-03

2019-05-04

2019-05-06

2019-12-15

我在文档中搜索了这些信息,但没有轻易找到。我不认为它有据可查。


查看完整回答
反对 回复 2023-05-17
?
jeck猫

TA贡献1909条经验 获得超7个赞

您可以使用这样的自定义格式创建 DateTimeFormatter


DateTimeFormatter.ofPattern("d.M.yyyy")

然后,如果日期和月份提供 1 位或 2 位数字,则您可以解析日期。


String input = "02.5.2019";

LocalDate date = LocalDate.parse(input, DateTimeFormatter.ofPattern("d.M.yyyy"));

我在这里使用了新的 java.time 包中的 LocalDate,所以我假设您的 Java 版本是最新的。


查看完整回答
反对 回复 2023-05-17
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

您建议的日期格式应该有效——就像这个测试一样:


@Test

public void test() throws ParseException {

    SimpleDateFormat f = new SimpleDateFormat("d.M.yyyy");

    f.parse("7.8.2019");

    f.parse("07.08.2019");

    f.parse("007.008.002019");

}

相比之下,DateTimeFormatter 不接受年份的前导零,但日和月的前导零不是问题:


@Test

public void test2() throws ParseException {

    DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();

    DateTimeFormatter f = builder.appendPattern("d.M.yyyy").toFormatter();

    f.parse("7.8.2019");

    f.parse("07.08.2019");

    f.parse("007.008.2019");

}


查看完整回答
反对 回复 2023-05-17
  • 3 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信