bob*_*alf 5 java date simpledateformat
我正在使用此处包含的代码来确定给定值是否为有效日期.在一个特定情况下,它正在评估以下街道地址:
100 112TH AVE NE
显然不是约会,但Java将其解释为:
太阳1月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
}
Run Code Online (Sandbox Code Playgroud)
控制台返回:
11:41:40.063 DEBUG TestValues | formattedDate = Sun 1月12日00:00:00 EST 100
知道这里发生了什么吗?
parse解析时,该方法不验证整个字符串是否被消耗; 你可以在有效的日期后随机垃圾,一切正常.在这种情况下,100 112可以成功解析为日期有点令人惊讶,但它可以.
您可以提供a ParsePosition来验证解析时是否消耗了整个字符串.
ParsePosition pos = new ParsePosition(0);
dfyyyyMMdd.parse(aValue, pos);
if (pos.getIndex() != aValue.length()) {
// there's garbage at the end
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |