如何在Go中获取文件的最后访问日期和时间?

时间:2011-11-28 09:57:57

标签: go last-modified

有谁知道如何检查文件访问日期和时间?该函数返回修改后的日期和时间,我需要一些东西,将访问日期时间与当前日期和时间进行比较。

3 个答案:

答案 0 :(得分:12)

您可以使用os.Stat获取FileInfo结构,该结构还包含上次访问时间(以及上次修改时间和上次状态更改时间)。

info, err := os.Stat("example.txt")
if err != nil {
     // TODO: handle errors (e.g. file not found)
}
// info.Atime_ns now contains the last access time
// (in nanoseconds since the unix epoch)

之后,您可以使用time.Nanoseconds来获取当前时间(也就是自UTC时间1970年1月1日00:00:00以来的纳秒)。要以纳秒为单位获得持续时间,只需减去这两个值:

duration := time.Nanoseconds() - info.Atime_ns

答案 1 :(得分:6)

或者,在Stat之后你也可以做

statinfo.ModTime()

如果您需要,例如对于网络服务器

,您也可以使用Format()

请参阅https://gist.github.com/alexisrobert/982674

答案 2 :(得分:0)

通过将os.FileInfo投射到*syscall.Stat_t

package main

import ( "fmt"; "log"; "os"; "syscall"; "time" )

func main() {
    for _, arg := range os.Args[1:] {
        fileinfo, err := os.Stat(arg)
        if err != nil {
            log.Fatal(err)
        }
        atime := fileinfo.Sys().(*syscall.Stat_t).Atim
        fmt.Println(time.Unix(atime.Sec, atime.Nsec))
    }
}