Javaで日付フォーマットの検証をしたいと言われました。
ぱっと思いつくのは、SimpleDateFormat
でsetLenient(false)
にしてparseする、
ですが、これだとException投げるんですよね。
Exception catchをlogicに使うのは良くない、
ということで、他を探してみると意外となかなかないんですねこれが。
commons-langのDateUtils.parseDateStrictly
もException返しますし。
色々探してみると、Apacheのcommons-validatorというのがありました。
1
2
3
4
5
6
7
8
9
10
11
| @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)
|