u-ryo's blog

Date fromat validation by Java

Javaで日付フォーマットの検証をしたいと言われました。 ぱっと思いつくのは、SimpleDateFormatsetLenient(false)にしてparseする、 ですが、これだとException投げるんですよね。 Exception catchをlogicに使うのは良くない、 ということで、他を探してみると意外となかなかないんですねこれが。 commons-langのDateUtils.parseDateStrictlyもException返しますし。

色々探してみると、Apacheのcommons-validatorというのがありました。

@Grab('commons-validator:commons-validator')
import org.apache.commons.validator.routines.CalendarValidator

pattern = "yyyy/MM/dd"
validator = CalendarValidator.getInstance()

assert validator.isValid("2016/02/29", pattern)
assert !validator.isValid("2016/02/30", pattern)

assert validator.isValid("2016/08/31", pattern)
assert !validator.isValid("2016/08/32", pattern)