0

我正在将 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 和 java 8 我得到了这个异常

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
    }
4

2 回答 2

1

Date 扩展方法被移到org.codehaus.groovy:groovy-dateutil. 如果您添加对该库的依赖项,则该minus方法应该开始工作。

于 2021-12-10T11:47:11.717 回答
0

我首先将日期更改为 localdate,然后减去 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());
于 2021-12-09T07:52:39.980 回答