“宽松”有什么用?

2022-08-31 14:03:41

这里用在 Java 中。我检查了文档,但没有得到它在说什么。lenientDateFormat

任何人都可以告诉我这个有什么用,用一个实时的例子来使用它?lenient


答案 1

javadoc 明确指出:

指定日期/时间分析是否宽松。通过宽容解析,解析器可以使用启发式方法来解释与此对象的格式不完全匹配的输入。使用严格解析时,输入必须与此对象的格式匹配。

因此,如果您有一个模式并创建了一个与您的模式严格匹配的日期对象,请将 lenient 设置为 。此外,默认情况下,它是宽松的。falseDateFormat

基本上,设置 Calendar.setLenient 和 Javadoc 声明:DateFormat

指定日期/时间解释是否宽松。如果解释得宽大,“1996年2月942日”这样的日期将被视为等同于1996年2月1日之后的第941天。使用严格(非宽松)解释,此类日期将导致引发异常。默认值为宽松。


答案 2

例如:

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy");
System.out.println(simpleDateFormat.parse("0"));
simpleDateFormat.setLenient(false);
System.out.println(simpleDateFormat.parse("0"));

结果:

Thu Jan 01 00:00:00 CET 1
Exception in thread "main" java.text.ParseException: Unparseable date: "0"
    at java.text.DateFormat.parse(Unknown Source)
    at net.java.quickcheck.generator.support.X.main(X.java:28)