如何按年,月,日对事件列表进行分组

姆比恩

需要一些帮助来转换从以下位置返回的数据:

def groupedResults = searchResults.groupBy{it.eventYear}{it.eventMonth}{it.eventStartDate};

上面的代码当前返回:

[2017: [ July: [ 07/17/2017: [ [eventName: TestEvent1, eventStartDatetime: 2017-07-17 12:00:00Z], [eventName: TestEvent2, eventStartDatetime: 2017-07-17 1:00:00Z] ], [07/18/2017: [ [eventName: TestEvent3, eventStartDatetime: 2017-07-17 12:00:00Z],...],...],...]

我需要以下内容:

[yearList: [yearValue: 2017, monthList: [ monthValue: July, dateList: [ dateValue: 07/21/2017, events: [ eventTitle: TestEvent, eventStartDatetime: 2017-07-17 12:00:00Z],...],...],...]....]

如何创建所描述的数据输出?

tim_yates

因此,通过一些工作,我得到了一个示例输入(顺便说一句,实际的示例输入始终很不错,因为它可以更轻松地查看您所拥有的东西。在旅途中,有两件事很重要,从哪里开始,在哪里想要完成):

import java.time.*
import java.time.format.*

def parse = { s ->
    LocalDateTime.parse(s, DateTimeFormatter.ofPattern('yyyy-MM-dd HH:mm:ssVV'))
}

def searchResults = [
    [xEventStartDateTime:parse('2017-07-17 12:00:00Z'), eventTitle:'National Funeral Directors Association (NFDA) Conference'],
    [xEventStartDateTime:parse('2017-07-24 12:00:00Z'), eventTitle:'Gathering of Warlocks'],
    [xEventStartDateTime:parse('2018-02-17 12:00:00Z'), eventTitle:'Goose worriers meetup'],
    [xEventStartDateTime:parse('2017-01-17 12:00:00Z'), eventTitle:'The new year angering of optometrists']
]

然后,我们可以按照您当前的状态将它们分组:

// Group as normal
def grouped = searchResults.groupBy(
    { it.xEventStartDateTime.year }, 
    { it.xEventStartDateTime.month }, 
    {it.xEventStartDateTime.toLocalDate() }
)

然后,我们只需要一个简单的重新组织步骤就可以将此分组图转换为所需的格式:

// Then modify to the format you want
def result = [
    yearList: grouped.collect { year, yGroup ->
        [ yearValue: year, monthList: yGroup.collect { month, mGroup ->
            [ monthValue: month, dateList: mGroup.collect { date, dGroup ->
                [ dateValue: date, events: dGroup ]
            } ]
        } ]
    }
]

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章