1 回答

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
希望以下答案是您要找的。
如果您的問題更多是關(guān)于時(shí)間范圍,您可以使用 function
Before
和After
fromtime
package如果您的問題更多是關(guān)于查找創(chuàng)建時(shí)間而不是修改時(shí)間。您可以考慮使用 package syscall 來查找 atime、mtime 和 ctime——本質(zhì)上它們是:
atime (access time) 是文件訪問時(shí)間
mtime(modify time)是文件修改時(shí)間
ctime(change time)是inode或者文件的改變時(shí)間
package main
import (
"io/fs"
"log"
"os"
"syscall"
"time"
)
func main() {
// prepare data
start, _ := time.Parse(time.RFC3339, "2022-11-26T07:04:05Z")
end, _ := time.Parse(time.RFC3339, "2022-11-26T08:10:00Z")
var dir = "your path"
files := FindFilesByDateRange(dir, start, end)
// print result
log.Printf("file range: %s-%s\n", start.Format(time.RFC3339), end.Format(time.RFC3339))
for _, f := range files {
log.Println(f.Name())
}
}
func FindFilesByDateRange(dir string, start, end time.Time) []fs.FileInfo {
fileSystem := os.DirFS(dir)
var files []fs.FileInfo
if err := fs.WalkDir(fileSystem, ".", func(path string, d fs.DirEntry, err error) error {
if err != nil {
log.Fatal(err)
}
fileInfo, err := d.Info()
if err != nil {
return err
}
stat := fileInfo.Sys().(*syscall.Stat_t)
cDate := time.Unix(stat.Ctimespec.Sec, stat.Ctimespec.Nsec).UTC()
if !d.IsDir() && (cDate.After(start) && cDate.Before(end)) {
files = append(files, fileInfo)
}
return nil
}); err != nil {
return nil
}
return files
}
- 1 回答
- 0 關(guān)注
- 161 瀏覽
添加回答
舉報(bào)