2011-11-28 15 views
7

Czy ktoś wie, jak sprawdzić datę i czas dostępu do pliku? Funkcja zwraca zmodyfikowaną datę i godzinę i potrzebuję czegoś, co porównuje dostęp do daty z aktualną datą i czasem.Jak uzyskać ostatnio dostępną datę i godzinę pliku w Go?

+1

Twoje pytania są specyficzne tylko dla 'języku Go' należy używać tylko odpowiedniego znacznika. Na przykład tag [tag: file] powinien być przeznaczony tylko dla pytań specyficznych dla plików. –

Odpowiedz

11

Możesz użyć os.Stat, aby uzyskać strukturę FileInfo, która zawiera również ostatni czas dostępu (jak również ostatnią modyfikację i ostatni czas zmiany statusu).

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) 

Po tym, można użyć time.Nanoseconds aby uzyskać aktualny czas (również w nanosekund od początku epoki Uniksa, 1 stycznia 1970 00:00:00 UTC). Aby uzyskać czas w nanosekund, po prostu odjąć te dwie wartości:

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

To nie było poprawne od wersji 1.0. Możesz uzyskać atime w sposób nieprzenośny, patrząc na pole '' FileInfo '' Sys'] (https://golang.org/pkg/os/#FileInfo) (typ tego zależy od 'GOOS'). –

7

Alternatywnie, po Stat można też zrobić

statinfo.ModTime() 

Również można użyć Format() na nim, powinno to potrzebne na przykład na serwerze internetowym

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

+2

Pytanie dotyczy * dostępu * czasu, a nie mod-czasu. –

+0

Odpowiedziałem na pytanie, na które odpowiedziałeś, więc ta odpowiedź dostaje ode mnie +1. Dziękuję Ci! – Shadoninja

Powiązane problemy