我正在制作一个小型活动日历,我希望按开始时间对活动进行排序!
我在grails中使用JodaTime Plugin作为startTime属性。 (http://www.grails.org/JodaTime+Plugin)
那么,我该如何使用此数据类型进行排序?这不起作用:
def sortedEvents = events.asList().sort({ a, b -> a.startTime <=> b.startTime } as Comparator)
我希望你能帮助我!
谢谢, whitenexx
/编辑/ 这是我得到事件的代码:
def getEventsNext(Location location) {
def events = location.events.findAll { it.endTime >= new DateTime() }
def sortedEvents = events.sort{it.startTime}
System.out.println(sortedEvents); //test
return sortedEvents
}
在/ event / list操作中,一切正常,g:sortableColumn(按startTime排序):
答案 0 :(得分:2)
试试这个:
def sortedEvents = events.asList().sort{it.startTime}
要反转排序顺序,请使用:
def sortedEvents = events.asList().sort{-it.startTime}
仅供参考,Groovy将此sort()
方法添加到Collection
,因此如果asList()
已经是events
,您可以从上面的代码中删除Collection
。
答案 1 :(得分:1)
尝试覆盖域类中的compareTo
方法。
例如,
int compareTo(obj) {
startTime.compareTo(obj.startTime)
}
对事件进行排序:
def sortedEvents = events.sort{e1,e2-> e1.startTime.compareTo(2.startTime)}
或者@Don建议的,等效的groovier
def sortedEvents = events.sort{e1,e2-> e1.startTime <=> e2.startTime}
答案 2 :(得分:0)
尝试
def events = location.events.findAll { it.endTime.isAfterNow() }
def sortedEvents = events.sort{it.startTime.toDate()}