gpt4 book ai didi

Java DateFormat.parse 认为 "100 112TH AVE NE"是一个日期

转载 作者:搜寻专家 更新时间:2023-10-31 19:33:20 25 4
gpt4 key购买 nike

我正在使用此处包含的代码来确定给定值是否为有效日期。在一种特定情况下,它正在评估以下街道地址:

100 112TH AVE NE

显然不是日期,但 Java 将其解释为:

Sun Jan 12 00:00:00 EST 100

有问题的代码:

String DATE_FORMAT = "yyyyMMdd";
try {
DateFormat dfyyyyMMdd = new SimpleDateFormat(DATE_FORMAT);
dfyyyyMMdd.setLenient(false);
Date formattedDate;
formattedDate = dfyyyyMMdd.parse(aValue);
console.debug(String.format("%s = %s","formattedDate",formattedDate));
} catch (ParseException e) {
// Not a date
}

控制台返回:

11:41:40.063 DEBUG TestValues | formattedDate = Sun Jan 12 00:00:00 EST 100

知道这里发生了什么吗?

最佳答案

parse 方法不验证在解析时是否使用了整个字符串;您可以在有效日期后随机生成垃圾,并且一切正常。在这种情况下,100 112 可以成功解析为日期有点令人惊讶,但确实可以。

您可以提供一个 ParsePosition 来验证在解析时是否使用了整个字符串。

ParsePosition pos = new ParsePosition(0);
dfyyyyMMdd.parse(aValue, pos);
if (pos.getIndex() != aValue.length()) {
// there's garbage at the end
}

关于Java DateFormat.parse 认为 "100 112TH AVE NE"是一个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23090158/

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