golang array time.Time 按 time.Duration 分组
时间: 2023-06-21 09:14:49 浏览: 140
你可以使用一个 `map[time.Duration][]time.Time` 来按照时间间隔分组。具体来说,你可以通过将时间转换为 Unix 时间戳,计算出时间间隔,然后将时间添加到相应的时间间隔对应的数组中,如下所示:
```go
func groupByDuration(times []time.Time, duration time.Duration) map[time.Duration][]time.Time {
groups := make(map[time.Duration][]time.Time)
for _, t := range times {
timestamp := t.Unix()
groupKey := time.Duration(timestamp/duration.Seconds()) * duration
groups[groupKey] = append(groups[groupKey], t)
}
return groups
}
```
这个函数接受一个 `times` 数组和一个 `duration` 时间间隔作为参数,并返回一个 `map[time.Duration][]time.Time`,其中键是时间间隔,值是在该时间间隔内的时间数组。需要注意的是,这个函数假定输入的时间数组已经按照时间顺序排好了序。如果时间数组未排序,则可以在循环之前对其进行排序。
阅读全文