42 lines
1010 B
Go
42 lines
1010 B
Go
package util
|
|
|
|
import (
|
|
"ZhenTuLocalPassiveAdapter/dto"
|
|
"sort"
|
|
"time"
|
|
)
|
|
|
|
func FilterAndSortFiles(fileList []dto.File, beginDt, endDt time.Time) []dto.File {
|
|
var filteredFiles []dto.File
|
|
|
|
for _, file := range fileList {
|
|
fileStartTime := file.StartTime
|
|
nextFileStartTime := file.EndTime
|
|
|
|
// 如果当前文件还没有开始
|
|
if beginDt.After(fileStartTime) {
|
|
// 没有下一个文件的情况下,就是最后一个文件
|
|
if nextFileStartTime.IsZero() {
|
|
continue
|
|
}
|
|
// 但是下一个文件已经开始
|
|
if beginDt.Before(nextFileStartTime) {
|
|
filteredFiles = append(filteredFiles, file)
|
|
}
|
|
// 已经开始,但是也已经结束了
|
|
} else if fileStartTime.After(endDt) {
|
|
continue
|
|
// 已经开始,但未结束
|
|
} else {
|
|
filteredFiles = append(filteredFiles, file)
|
|
}
|
|
}
|
|
|
|
// 按照 GetDiffMs 的值降序排序
|
|
sort.Slice(filteredFiles, func(i, j int) bool {
|
|
return filteredFiles[i].GetDiffMs() > filteredFiles[j].GetDiffMs()
|
|
})
|
|
|
|
return filteredFiles
|
|
}
|