我正在尝试拒绝从日期格式HH解析(通过SimpleDateFormat :: parse)“18:00”。有没有办法在没有额外代码的情况下实现这一目标?日期格式是否接受$ /正则表达式?我已将setLenient设置为false,并且18:00仍然通过HH日期格式。
我意识到我可以对正在解析的字符串进行其他比较,但我正在寻找一种在DateFormat字符串中执行此操作的方法。
答案 0 :(得分:1)
不,SDF不允许“规则”。它只是根据模式解析和格式化日期,而不是正则表达式模式,所以没有正则表达式。
答案 1 :(得分:0)
SimpleDateFormat确实执行了一种验证 - 如果你试图解析一个并不意味着指定格式的字符串,它会抛出一个ParseException(尽管Javadoc是crpytic关于如果开始时只抛出一个异常不符合格式(http://download.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html#parse(java.lang.String)))。
如果日期格式只是“HH”,则字符串“18:00”符合该格式。如果日期格式是“HH:MMM”,(2位数小时,然后是3个字母的月份),则应该抛出ParseException。
如果您尝试这样验证,那么我建议使用Regex,甚至只使用Java代码。我不确定你想要达到的目标,所以我不能再进一步提出建议了。