Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert st_mtime (which get from stat function) to string or char

I need to convert st_mtime to string format for passing it to java layer, i try to use this example http://www.cplusplus.com/forum/unices/10342/ but compiler produce errors

invalid conversion from 'long unsigned int*' to 'const time_t* {aka long int const*}'

initializing argument 1 of 'tm* localtime(const time_t*)' [-fpermissive]

What i doing wrong, how to get time creation of file using stat function in string presentation.

Help please.

like image 217
testCoder Avatar asked Nov 24 '12 14:11

testCoder


1 Answers

According to the stat(2) man page, the st_mtime field is a time_t (i.e. after reading the time(7) man page, a number of seconds since the unix Epoch).

You need localtime(3) to convert that time_t to a struct tm in local time, then, strftime(3) to convert it to a char* string.

So you could code something like:

time_t t = mystat.st_mtime;
struct tm lt;
localtime_r(&t, &lt);
char timbuf[80];
strftime(timbuf, sizeof(timbuf), "%c", &lt);

then use timbuf perhaps by strdup-ing it.

NB. I am using localtime_r because it is more thread friendly.

like image 138
Basile Starynkevitch Avatar answered Sep 28 '22 03:09

Basile Starynkevitch