gpt4 book ai didi

java - 为什么非宽松的 SimpleDateFormat 用字母解析日期?

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:56 26 4
gpt4 key购买 nike

当我运行以下代码时,我希望得到一个堆栈跟踪,但它看起来却忽略了我的的错误部分,为什么会这样?

package test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
public static void main(final String[] args) {
final String format = "dd-MM-yyyy";
final String value = "07-02-201f";
Date date = null;
final SimpleDateFormat df = new SimpleDateFormat(format);
try {
df.setLenient(false);
date = df.parse(value.toString());
} catch (final ParseException e) {
e.printStackTrace();
}
System.out.println(df.format(date));
}

}

输出是:

07-02-0201

最佳答案

DateFormat.parse 的文档(由 SimpleDateFormat 继承)说:

The method may not use the entire text of the given string.
final String value = "07-02-201f";

在您的情况 (201f) 中,它能够解析有效字符串直到 201,这就是它没有给您任何错误的原因。

同一方法的“Throws”部分定义如下:

ParseException - if the beginning of the specified string cannot be parsed

因此,如果您尝试将字符串更改为

final String value = "07-02-f201";

您将得到解析异常,因为无法解析指定字符串的开头。

关于java - 为什么非宽松的 SimpleDateFormat 用字母解析日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14850916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com