首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleDateFormat模糊匹配

SimpleDateFormat模糊匹配
EN

Stack Overflow用户
提问于 2016-08-30 03:55:18
回答 2查看 88关注 0票数 2

我有密码:

代码语言:javascript
复制
public List<Date> parse(String date) {
        // todo: for parsing
        List<Date> dateList = new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.setLenient(true);
        for (String format: DATE_FORMATS) {
            sdf = new SimpleDateFormat(format);
            try {
                Date dt = sdf.parse(date);
                System.out.println("Success! "+format);
                dateList.add(dt);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                //System.err.println("failed!");
            }
        }
        return dateList;
    }

这被称为:

代码语言:javascript
复制
parse("Monday Aug 29 5:51 PM GMT 2016")

我得到的结果是:

代码语言:javascript
复制
Success! EEEE MMM dd hh:mm a z yyyy
Success! EEEE MMM yyyy hh:mm a z dd

为什么第二种模式与示例相匹配?任何开悟都是非常感激的。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-30 04:04:58

您的下面代码将被新的对象创建覆盖。

代码语言:javascript
复制
sdf.setLenient(true);

修改属性后创建对象。(由于下面的原因,行上端无用)

代码语言:javascript
复制
 sdf = new SimpleDateFormat(format);//replace this code by applyPattern

现在宽严相济又会有默认值。

而不是使用像下面这样的方法来动态地将模式设置为sdf。

代码语言:javascript
复制
sdf.applyPattern(arg0);
票数 1
EN

Stack Overflow用户

发布于 2016-08-30 04:07:49

您正在使用宽松的日期格式,这允许超出范围日期元素。如果不希望超出范围的元素被允许,请使用非宽松的日期格式。

例如,此代码只使用提供的日期格式之一进行分析:

代码语言:javascript
复制
  public List<Date> parse(String date) {
    // todo: for parsing
    List<Date> dateList = new ArrayList<>();
    for (String format: DATE_FORMATS) {
      SimpleDateFormat sdf = new SimpleDateFormat(format);
      sdf.setLenient(false);
      try {
        Date dt = sdf.parse(date);
        System.out.println("Success! "+format);
        dateList.add(dt);
      } catch (ParseException e) {
        // TODO Auto-generated catch block
        //System.err.println("failed!");
      }
    }
    return dateList;
  }

我认为第二种格式是将所提供的日期解析为0029年8月0029年8月26日这一宽松模式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39218514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档