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

如何使用SimpleDateFormat以多种格式解析日期

如何使用SimpleDateFormat以多种格式解析日期

汪汪一只猫 2019-07-09 14:34:55
如何使用SimpleDateFormat以多种格式解析日期  我正试图解析文档中的一些日期。用户输入这些日期的格式与此相似,但格式不准确。以下是格式:9/099/200909/20099/1/20099-1-2009 尝试解析所有这些问题的最佳方法是什么?这些似乎是最常见的,但我想挂我的是,如果我有“M/yyy”的模式-总是在“MM/yyy”之前捕获,那么我是否必须以对最严格的方式进行嵌套的最少限制的方式来设置我的try/catch块呢?看起来,要做到这一点,肯定需要大量的代码复制。
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

你需要用不同的SimpleDateFormat对象用于每个不同的模式。也就是说,你不需要那么多不同的,多亏了这个:

编号:对于格式设置,模式字母的数量是最小的数字数,较短的数字是零填充到此数量。对于解析,除非需要将两个相邻字段分开,否则将忽略模式字母的数量。

因此,您需要这些格式:

  • "M/y"

    (包括

    9/099/2009

    ,和

    09/2009)

  • "M/d/y"

    (包括

    9/1/2009)

  • "M-d-y"

    (包括

    9-1-2009)

所以,我的建议是写一个像这样工作的方法(未测):

// ...List<String> formatStrings = Arrays.asList("M/y", "M/d/y", "M-d-y");// ...Date tryParse(String dateString){
    for (String formatString : formatStrings)
    {
        try
        {
            return new SimpleDateFormat(formatString).parse(dateString);
        }
        catch (ParseException e) {}
    }

    return null;}


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 1594 浏览

添加回答

举报

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