If it's a data, why not to validate it using standard date formatter? Like:
static constraints = {
mydate validator: {
try {
Date.parse('MM-dd-yyyy hh:mma', it)
return true
} catch (ParseException e) {
return false
}
}
}
Btw, at this case Date
can parse not so valid dates (and transform it to correnct value, like 15am
to 3pm
). If you need exactly valid format, your can compare it with original value:
static constraints = {
mydate validator: {
try {
Date date = Date.parse('MM-dd-yyyy hh:mma', it)
return Date.format('MM-dd-yyyy hh:mma', date) == it
} catch (ParseException e) {
return false
}
}
}
Or you can use SimpleDateFormat
instead:
final static DateFormat DATEFORMAT = new SimpleDateFormat('MM-dd-yyyy hh:mma')
static constraints = {
mydate validator: {
try {
Date date = DATEFORMAT.parse(it)
return DATEFORMAT.format(date) == it
} catch (ParseException e) {
return false
}
}
}