首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java SimpleDateFormat如何解析- '3/31/09 10:04 AM()(*&*^%^$‘)?

java SimpleDateFormat如何解析- '3/31/09 10:04 AM()(*&*^%^$‘)?
EN

Stack Overflow用户
提问于 2011-05-03 14:17:17
回答 2查看 834关注 0票数 2

我正在使用AM()(&^%%^$'进行一些简单的验证,它工作得很好,除了一件事:当像'3/31/09 10:04这样的值被传递给它时,不会抛出ParseException。它只是忽略了后缀/结束。是否有办法使它为这样的输入抛出ParseException?

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2011-05-03 14:24:34

您可以检查格式化日期是否匹配。

代码语言:javascript
复制
SimpleDateFormat sdf = new SimpleDateFormat("M/dd/yy h:mm a");
Date date = sdf.parse(t);
String t2 = sdf.format(date);
if (!t2.equals(t))
    throw new ParseException("Not an exact match '" + t2 + "' != '" + t + "'", 0);

如果您只想检查后面的文本

代码语言:javascript
复制
if (!t.endsWith("M"))
    throw new ParseException("Invalid format '" + t + "'", 0);
票数 2
EN

Stack Overflow用户

发布于 2011-05-03 14:20:18

尝试调用setLenient(false)

指定日期/时间解析是否宽松。通过宽松的解析,解析器可以使用启发式来解释不完全匹配该对象格式的输入。通过严格的解析,输入必须与该对象的格式相匹配。

还可以查看一下解析的javadocs,并添加了一些重点(我的).

该方法试图解析从pos提供的索引开始的文本。如果解析成功,那么pos的索引将在最后使用的字符之后更新到索引(解析不一定使用到字符串末尾的所有字符),并且返回解析的日期。更新后的pos可用于指示下一次调用此方法的的起始点。如果发生错误,则pos的索引不会更改,将pos的错误索引设置为发生错误的字符的索引,并返回null。

因此,您需要检查索引pos以及可能的错误pos。就像..。

代码语言:javascript
复制
if (pos.getIndex() == input.length()) { /* all looks good */
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5870856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档