SimpleDateFormat解析“ yyyy-mm-dd”格式的ISO格式

时间:2018-11-09 16:47:39

标签: java simpledateformat

我正在验证日期格式,其中 输入:

    dateFormat                    | dateString                  |Excepted OP|output
    "yyyyMMdd"                    |"20180909T10:00.000z"        |false      |true

    "yyyymmdd"                    |"20180909T10.000z"           |false      |true

    "yyyy-MM-ddhh:mm:ss"          |"20180909T00:00:00.000z"     |false      |false

代码:

    formatter.setTimeZone(defaultTimeZone);
    formatter.applyPattern(dateFormat);

    try {
        formatter.setLenient(false);
        formatter.parse(dateString.replaceAll("Z$", "+0000"));
    } catch (Exception e) {
           e.printTrackTrace();
    }

我的问题是,为什么SimpleDateFormat解析case:1和Case:2。我不希望他们解析这些日期。正如我已经将setLenient设置为false一样。尽管如此,他们仍在解析这些日期并返回true。

在情况1和情况2中: 当我传递不同格式的日期(即UTC / ISO)时。我想要失败,因为那不是我期望的格式。SimpleDateFormat正在考虑采用(“ yyyy-MM-dd”)格式的时间。我不要这就是为什么我使用setLenient(false)的原因,但这无济于事。

有人可以回答为什么会这样,我应该如何解决。

0 个答案:

没有答案