我正在验证日期格式,其中 输入:
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)的原因,但这无济于事。
有人可以回答为什么会这样,我应该如何解决。