将datetime转换为日期

Omn*_*ent 8 grails groovy datetime

如何将Grails中的datetime字段转换为日期,而不是捕获时间?我需要这样做以与系统日期进行比较.

class Trip 
{
    String name
    String city
    Date startDate
    Date endDate
    String purpose
    String notes

    static constraints = {
        name(maxLength: 50, blank: false)
        startDate(validator: {return (it >= new Date())}) // This won't work as it compares the time as well 
        city(maxLength: 30, blank: false)
    }
}
Run Code Online (Sandbox Code Playgroud)

Ken*_*tle 7

[遗憾的是]没有用于执行此操作的"开箱即用"方法Grails|Groovy|Java.

每当提出问题或提出问题时,总会有人抛出Joda-Time,但包括另一个库并不总是一个选择.java.util.Datejava.util.Calendar

最近,对于类似的问题,我们创建了一个DateTimeUtil带有static方法的类,如下所示Date:

class DateTimeUtil {

    // ...

    public static Date getToday() {
        return setMidnight(new Date())
    }

    public static Date getTomorrow() {
        return (getToday() + 1) as Date
    }

    public static Date setMidnight(Date theDate) {
        Calendar cal = Calendar.getInstance()
        cal.setTime(theDate)
        cal.set(Calendar.HOUR_OF_DAY, 0)
        cal.set(Calendar.MINUTE, 0)
        cal.set(Calendar.SECOND, 0)
        cal.set(Calendar.MILLISECOND, 0)
        cal.getTime()
    }

    //...

}
Run Code Online (Sandbox Code Playgroud)

然后,在验证器中,您可以使用

startDate(validator: {return (it.after(DateTimeUtil.today))}) //Groovy-ism - today implicitly invokes `getToday()` 
Run Code Online (Sandbox Code Playgroud)