【发布时间】:2013-09-03 06:25:57
【问题描述】:
我有这个代码:
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
dateFormat.setLenient(false);
Date date = dateFormat.parse("10/20/20128");
并且我希望 dateFormat.parse 调用抛出 ParseException 因为我提供的年份是 5 个字符,而不是像我定义的格式中的 4 个字符。但出于某种原因,即使将 lenient 设置为 false,此调用也会返回 10/20/20128 的 Date 对象。
这是为什么呢?这对我来说没有多大意义。是否有其他设置使其更加严格?
【问题讨论】:
-
如果将其解析为 4 位数字而不是 5 位数字,那将不是正确的年份。
-
我相信如果您担心将其设置为 4 以防用户输入或输入错误,您必须在设置日期值之前进行检查。
-
我不希望它解析为 4 位数字,我希望它失败(给我一个例外),因为我提供的值与确切的日期格式不匹配。跨度>
-
您必须自己检查该值并在 Try 块中捕获您自己的异常。形成答案,Java 似乎支持 2 种格式的年份..yy 和全年。在将日期字符串分配给日期之前检查它。
-
不会的。您必须对其进行编码。更新了我的答案。
标签: java date simpledateformat date-parsing