//go:build darwin package filedate import ( "fmt" "os" "time" ) func SetFileTime(path string, ctime, atime, mtime time.Time) error { var err error originalAtime := atime originalMtime := mtime if atime.IsZero() || mtime.IsZero() { var fi os.FileInfo fi, err = os.Stat(path) if err != nil { return fmt.Errorf("failed to get file info: %w", err) } // 获取原始时间 if atime.IsZero() { originalAtime = fi.ModTime() // macOS 没有访问时间,使用修改时间代替 } if mtime.IsZero() { originalMtime = fi.ModTime() } } err = os.Chtimes(path, originalAtime, originalMtime) if err != nil { return fmt.Errorf("Chtimes failed: %w", err) } return nil }