10

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

4

3 回答 3

15

您可以使用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获取当前时间(也是自 unix 纪元 1970 年 1 月 1 日 00:00:00 UTC 以来的纳秒)。要获得以纳秒为单位的持续时间,只需减去这两个值:

duration := time.Nanoseconds() - info.Atime_ns
于 2011-11-28T10:07:25.690 回答
8

或者,在 Stat 你也可以做

statinfo.ModTime()

如果您需要它,例如用于网络服务器,您也可以在其上使用 Format()

https://gist.github.com/alexisrobert/982674

于 2014-08-06T15:20:21.730 回答
5

通过转换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))
    }
}
于 2019-03-22T16:12:44.817 回答