2017-05-08 1 views
0

J'essaie d'obtenir la dernière modification d'un fichier dans C/Linux, mais l'heure est toujours erronée.Dernière heure de modification du fichier dans C

struct stat attrib; 
stat("/etc/example/file.txt", &attrib); 
char time[50]; 
strftime(time, 50, '%Y-%m-%d %H:%M:%S", localtime(&attrib.st_mtime)); 

Le temps d'impression me donne "2024-05-01 15:35:21". L'année et le jour sont évidemment faux. J'ai essayé différentes options telles que gmtime au lieu de localtime, mais cela ne produit pas la sortie correcte. en utilisant "ls -l" montre le bon mois, jour et année ... Donc je ne suis pas sûr de ce que je fais mal.

+1

' '% Y-% m-% d% H:% M:% S "'' modification" % Y-% m-% d% H:% M:% S" ' – eyllanesc

+0

Did vous vérifiez que l'appel 'stat()' a bien fonctionné, sinon vous travaillez avec des données aléatoires. –

Répondre

1

L'impression s'effectue correctement.

// try.c 

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <unistd.h> 
#include <time.h> 

int main (int argc, char **argv) 
{ 
    struct stat attrib; 
    stat("file.txt", &attrib); 
    char time[50]; 
    strftime(time, 50, "%Y-%m-%d %H:%M:%S", localtime(&attrib.st_mtime)); 
    printf ("%s\n", time); 
} 

$ gcc -otry try.c 
$ ./try 
2017-05-08 08:43:42 

$ ls -ls file.txt 
4 -rw-rw-r-- 1 user1 user1 12 May 8 08:43 file.txt