没有方法签名:java.util.Date.minus() 适用于参数类型:(整数)?

No signature of method: java.util.Date.minus() is applicable for argument types: (Integer)?

我正在将 grails 2.2 升级到 grails 4.0.10。

在使用 java 7 的 grails 2.2 中,这曾经有效

def eanalytics = EventAnalytics.createCriteria().get(){
    eq('event', raceGroup)
    lt('dateCreated', timeService.now())
    gt('dateCreated', timeService.now() - 1)
}

现在对于 grails 4 和 java8 我得到这个异常

Caused by: groovy.lang.MissingMethodException: No signature of method: java.util.Date.minus() is applicable for argument types: (Integer) values: [1]
Possible solutions: find(), find(groovy.lang.Closure), is(java.lang.Object), any(), print(java.io.PrintWriter), use([Ljava.lang.Objec

似乎我无法通过减去 java 中迄今为止的天数来获得新日期 8. 执行此操作的等效代码是什么?感谢您的帮助。

timeservice.now 是

def now(){
        def now = new Date()
        return now
    }

我通过先将日期更改为本地日期然后减去 1 然后再更改回 java.util.date 来修复它。

def localDate = timeService.now().toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDate().minusDays(1)

        def gdate2 = Date.from(localDate.atStartOfDay(java.time.ZoneId.systemDefault()).toInstant());

日期扩展方法已移至 org.codehaus.groovy:groovy-dateutil。如果您添加对该库的依赖,minus 方法应该开始工作。