Java DateFormat.parse thinks quot;100 112TH AVE NEquot; is a date(Java DateFormat.parse认为第112街100号是日期(Q))
问题描述
我使用这里包含的代码来确定给定值是否为有效日期。在一个特定案例中,它评估以下街道地址:
第112大道100号
显然不是日期,但Java将其解释为:
美国东部标准时间12:00:00:00
有问题的代码:
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调试测试值|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认为第112街100号是日期(&Q)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java DateFormat.parse认为第112街100号是日期(&Q)


基础教程推荐
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 降序排序:Java Map 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01