djherbis/times

#golang file times (atime, mtime, ctime, btime)

Go

280

116 commits

updated Oct 20, 2023

See the code

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

djherbis/times

#golang file times (atime, mtime, ctime, btime)

Go

280

116 commits

updated Oct 20, 2023

See the code

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

Significant stargazers

Nuno Cruces

190 followers · starred Oct 2023

Semih Buyukgungor

29 followers · starred Jan 2025

Tom Thorogood

126 followers · starred Dec 2024

Chris Bednarski

110 followers · starred Jul 2024