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 }