Categorygithub.com/djherbis/times
modulepackage
1.6.0
Repository: https://github.com/djherbis/times.git
Documentation: pkg.go.dev

# README

times

GoDoc Release Software License go test Coverage Status Go Report Card Sourcegraph

Usage

File Times for #golang

Go has a hidden time functions for most platforms, this repo makes them accessible.

package main

import (
  "log"

  "github.com/djherbis/times"
)

func main() {
  t, err := times.Stat("myfile")
  if err != nil {
    log.Fatal(err.Error())
  }

  log.Println(t.AccessTime())
  log.Println(t.ModTime())

  if t.HasChangeTime() {
    log.Println(t.ChangeTime())
  }

  if t.HasBirthTime() {
    log.Println(t.BirthTime())
  }
}

Supported Times

windowslinuxsolarisdragonflynaclfreebsddarwinnetbsdopenbsdplan9jsaix
atime
mtime
ctime✓*
btime✓*
  • Linux btime requires kernel 4.11 and filesystem support, so HasBirthTime = false. Use Timespec.HasBirthTime() to check if file has birth time. Get(FileInfo) never returns btime.
  • Windows XP does not have ChangeTime so HasChangeTime = false, however Vista onward does have ChangeTime so Timespec.HasChangeTime() will only return false on those platforms when the syscall used to obtain them fails.
  • Also note, Get(FileInfo) will now only return values available in FileInfo.Sys(), this means Stat() is required to get ChangeTime on Windows

Installation

go get -u github.com/djherbis/times

# Packages

# Functions

Get returns the Timespec for the given FileInfo.
Lstat returns the Timespec for the given filename, and does not follow Symlinks.
Stat returns the Timespec for the given filename.
StatFile returns the Timespec for the given *os.File.

# Constants

HasChangeTime and HasBirthTime are true if and only if the target OS supports them.
HasChangeTime and HasBirthTime are true if and only if the target OS supports them.

# Interfaces

Timespec provides access to file times.