2011-11-28 14 views
7

Qualcuno sa come controllare la data e l'ora di accesso di un file? La funzione restituisce la data e l'ora modificate e ho bisogno di qualcosa che paragona il tempo di accesso alla data e ora correnti.Come ottenere la data e l'ora dell'ultimo accesso al file in Go?

+1

le tue domande sono specifici solo per la lingua 'Go' si prega di utilizzare solo il tag in questione. Ad esempio il tag [tag: file] dovrebbe essere solo per domande specifiche dei file. –

risposta

11

È possibile utilizzare os.Stat per ottenere una struttura FileInfo che contiene anche l'ultima ora di accesso (nonché l'ultima modifica e l'ultima ora di modifica dello stato).

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) 

Dopo di che, è possibile utilizzare time.Nanoseconds per ottenere l'ora corrente (anche in nanosecondi dalla Unix Epoch, 1 Gennaio 1970 00:00:00 UTC). Per ottenere la durata in nanosecondi, basta sottrarre questi due valori:

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

Questo non è stato corretto da Go 1.0. È possibile ottenere atime in modo non portatile esaminando il campo ['FileInfo'' Sys'] (https://golang.org/pkg/os/#FileInfo) (il cui tipo dipende da 'GOOS').). –

7

In alternativa, dopo l'Stat si può anche fare

statinfo.ModTime() 

Inoltre è possibile utilizzare il formato() su di esso, se ne avete bisogno ad esempio, per un server web

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

+2

La domanda chiede informazioni su * access * time, non su mod-time. –

+0

Ho cercato su google la domanda che hai risposto, quindi questa risposta ottiene un +1 da me. Grazie! – Shadoninja

Problemi correlati