这是我的代码:
try {
DateFormat dateFormat = new SimpleDateFormat(pattern);
dateFormat.setLenient(false);
Date date = dateFormat.parse(value);
if (date != null) {
return true;
}
} catch (ParseException e) {}
1。)当我将值传递为" 01/07 / 2015"和" HH:mm"我正确得到了例外。
2。)然而,当我将价值传递给" 01/07 / 2015"和" HH"我得到一个" Thu Jan 01 01:00:00 EST 1970"日期对象。
除了场景#2之外,我还会抛出异常,因为给定的字符串完全不匹配给定的模式。即使设置了setLenient(false),为什么我会得到那个奇怪的日期?
答案 0 :(得分:1)
答案 1 :(得分:1)
parseObject
public Object parseObject(String source)
throws ParseException
Parses text from the beginning of the given string to produce an object. The method may not use the entire text of the given string
我认为#1与分隔符不匹配。虽然模式是:。
,但你把它放进去了并且#2在HH之后立即停止匹配,因为它从给定字符串的开头解析文本并且DOESN' T使用给定字符串的整个文本。
答案 2 :(得分:0)
我找到了解决这个问题的方法。 为了解决我的问题,我将整个代码包装在if语句中,我检查模式的长度是否与值的长度相同,因为它们应该在我使用此代码进行验证时:
if(StringUtils.length(pattern) == StringUtils.length(value)) {
try {
DateFormat dateFormat = new SimpleDateFormat(pattern);
dateFormat.setLenient(false);
Date date = dateFormat.parse(value);
if (date != null) {
return true;
}
} catch (ParseException e) {}
}
return false;