Java SimpleDataFormat解析和模糊日期格式

Java SimpleDataFormat解析和模糊日期格式,java,parsing,date,Java,Parsing,Date,我试图拒绝日期格式HH中“18:00”的解析(通过SimpleDataFormat::parse)。有没有一种方法可以在没有额外代码的情况下实现这一点?日期格式是否接受$/正则表达式?我已经将setLenient启用为false,并且18:00仍然通过HH日期格式 我意识到我可以对正在解析的字符串进行其他比较,但我正在寻找一种在DateFormat字符串中进行比较的方法 不,SDF不允许“规则”。它只是根据模式解析和格式化日期,而不是正则表达式类型的模式,因此没有正则表达式 SimpleData

我试图拒绝日期格式HH中“18:00”的解析(通过SimpleDataFormat::parse)。有没有一种方法可以在没有额外代码的情况下实现这一点?日期格式是否接受$/正则表达式?我已经将setLenient启用为false,并且18:00仍然通过HH日期格式

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

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

  • SimpleDataFormat确实执行了一种验证——如果您试图解析一个不表示指定格式的字符串,它将抛出一个ParseException(尽管Javadoc只是在开始不符合格式时才抛出一个异常)(http://download.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html#parse(java.lang.String)))

  • 如果日期格式仅为“HH”,则字符串“18:00”符合该格式。如果日期格式为“HH:MMM”(两位数的小时,后跟三个字母的月份),则可能会引发异常


  • 如果你想这样验证,我建议你使用正则表达式,甚至只使用Java代码。我不确定你想实现什么,所以我恐怕不能进一步建议。

    你不能用“HH”来验证,但你可以用“HH”来验证(我假设你希望人们在这里只输入1-12小时…)。