【发布时间】:2023-03-06 17:50:01
【问题描述】:
有人知道如何检查文件访问日期和时间吗?该函数返回修改后的日期和时间,我需要将访问的日期时间与当前日期和时间进行比较。
【问题讨论】:
标签: go last-modified
有人知道如何检查文件访问日期和时间吗?该函数返回修改后的日期和时间,我需要将访问的日期时间与当前日期和时间进行比较。
【问题讨论】:
标签: go last-modified
您可以使用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
【讨论】:
FileInfo's Sys 字段(其类型取决于GOOS)以非便携式方式获得时间。
或者,在Stat之后你也可以这样做
statinfo.ModTime()
如果您需要它,例如用于网络服务器,您也可以在其上使用 Format()
【讨论】:
通过将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))
}
}
【讨论】: