SimpleDateFormat解析和模糊日期格式

时间:2011-08-11 21:31:18

标签: java parsing date

我正在尝试拒绝从日期格式HH解析(通过SimpleDateFormat :: parse)“18:00”。有没有办法在没有额外代码的情况下实现这一目标?日期格式是否接受$ /正则表达式?我已将setLenient设置为false,并且18:00仍然通过HH日期格式。

我意识到我可以对正在解析的字符串进行其他比较,但我正在寻找一种在DateFormat字符串中执行此操作的方法。

2 个答案:

答案 0 :(得分:1)

不,SDF不允许“规则”。它只是根据模式解析和格式化日期,而不是正则表达式模式,所以没有正则表达式。

答案 1 :(得分:0)

  1. SimpleDateFormat确实执行了一种验证 - 如果你试图解析一个并不意味着指定格式的字符串,它会抛出一个ParseException(尽管Javadoc是crpytic关于如果开始时只抛出一个异常不符合格式(http://download.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html#parse(java.lang.String)))。

  2. 如果日期格式只是“HH”,则字符串“18:00”符合该格式。如果日期格式是“HH:MMM”,(2位数小时,然后是3个字母的月份),则应该抛出ParseException。

  3. 如果您尝试这样验证,那么我建议使用Regex,甚至只使用Java代码。我不确定你想要达到的目标,所以我不能再进一步提出建议了。