Java中的奇怪日期解析
我正在尝试进行日期验证。当用户输入类似于:2552533 Jan 2012 1340001的内容时,将解析为:Wed Sep 03 07:41:00 EDT 9000。这是我的密码:Java中的奇怪日期解析,java,parsing,date,Java,Parsing,Date,我正在尝试进行日期验证。当用户输入类似于:2552533 Jan 2012 1340001的内容时,将解析为:Wed Sep 03 07:41:00 EDT 9000。这是我的密码: SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy kkmm"); ... Date test; try { test = sdf.parse(dateString); } catch (Exception e) { ... 这里的dateSt
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy kkmm");
...
Date test;
try {
test = sdf.parse(dateString);
} catch (Exception e) {
...
这里的dateString
是我试图解析为日期的字符串。如果字符串不是有效日期,比如:552533 Jan 2012 1340001,我希望抛出一个错误。我做错了什么?尝试一下(在分析实际日期之前):
另见:
simpleDataFormat.parse
在出现错误时不会引发任何异常,它返回null
。从javadoc:
Returns:
A Date parsed from the string. In case of error, returns null.
Throws:
NullPointerException - if text or pos is null.
因此,您可以:
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy kkmm");
...
Date test = sdf.parse(dateString);
if(test == null) {
// there was an error
}
SimpleDataFormat.parse
在出现错误时不会引发任何异常,它返回null
。从javadoc:
Returns:
A Date parsed from the string. In case of error, returns null.
Throws:
NullPointerException - if text or pos is null.
因此,您可以:
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy kkmm");
...
Date test = sdf.parse(dateString);
if(test == null) {
// there was an error
}
正如Tudor提到的,
SimpleDataFormat
在解析失败时不会抛出异常。另一种选择是Apache Commons提供的DateUtils.parseDate90
()。正如Tudor提到的,SimpleDataFormat
在解析失败时不会引发异常。另一种选择是ApacheCommons提供的DateUtils.parseDate90
()。下意识的回答:你试过Joda Time吗@如果有人不使用它,Freiheit-JodaTime总是值得发布的。这不仅仅是一种下意识的反应,如果它造成的区别像呼吸和溺水。下意识的反应:你试过Joda Time吗@如果有人不使用它,Freiheit-JodaTime总是值得发布的。这不仅仅是一个下意识的反应,如果它造成的区别像呼吸和溺水。我非常喜欢单线解决方案。谢谢你的帮助,现在一切正常。我非常喜欢单线解决方案。谢谢你的帮助,现在一切正常。