Grails验证日期为13年前的今天
我正在尝试将登记簿上的出生日期设置为至少13岁。我不想在我的用户类上有一个Grails验证日期为13年前的今天,grails,groovy,Grails,Groovy,我正在尝试将登记簿上的出生日期设置为至少13岁。我不想在我的用户类上有一个age字段,我只想使用dateOfBirth 我如何包括验证,以减去整整13年,考虑闰年 目前,在我的约束中,我使用以下行: dateOfBirth blank:false,max:(新日期()-13*365) 我宁愿不使用自定义验证,因为我相信没有它肯定有办法。我尝试了以下方法: dateOfBirth blank:false,使用(TimeCategory){max:newdate()-13.year} 这不起作用,
age
字段,我只想使用dateOfBirth
我如何包括验证,以减去整整13年,考虑闰年
目前,在我的约束中,我使用以下行:
dateOfBirth blank:false,max:(新日期()-13*365)
我宁愿不使用自定义验证,因为我相信没有它肯定有办法。我尝试了以下方法:
dateOfBirth blank:false,使用(TimeCategory){max:newdate()-13.year}
- 这不起作用,因为
部分(我相信)使用(时间类别)
dateOfBirth blank:false,最大值:13年前
及
dateOfBirth blank:false,最大值:13.years.ago.toDate()
并导入了
com.metasieve.magicnumbers.*
软件包。您的第一次尝试成功(尽管不准确),这让我相信这会成功:
dateOfBirth blank: false, max: ((new Date()).toCalendar().add( -13, Calendar.YEAR )).getTime()
虽然我会检查它是否实际编译到单个日期,但每次检查约束时都会重新计算。自定义验证器有什么问题?我相信这是一个很好的例子,定制验证器是正确的选择
import groovy.time.TimeCategory
dateOfBirth validator: {
use (TimeCategory) {
it?.before(13.years.ago)
}
}
可能会有帮助