Convertir segundos desde el 1 de enero de 1970 hasta la fecha usando lenguaje C

Progtwig C para convertir segundos a la fecha. Tengo el siguiente código de progtwig C.

#include  #include  #include  #ifdef HAVE_ST_BIRTHTIME # define birthtime(x) (x).st_birthtime #else # define birthtime(x) (x).st_ctime #endif int main(int argc, char *argv[]) { struct stat st; size_t i; for( i=1; i<argc; i++ ) { if( stat(argv[i], &st) != 0 ) perror(argv[i]); printf("%i\n", birthtime(st)); } return 0; } 

Devuelve el tiempo en segundos desde el 1 de enero de 1970 hasta la fecha de creación del archivo. ¿Cómo convierto los segundos a la fecha de creación utilizando solo el lenguaje C?

La función Estándar C para convertir segundos desde la época a un tiempo desglosado, es localtime() o gmtime() , según sus necesidades. Luego puede usar asctime() para convertir los tiempos desglosados ​​en una cadena. No olvide #include y lea las páginas del manual correspondiente.

Aquí hay algunas funciones que uso:

 typedef int64_t timestamp_t; timestamp_t currentTimestamp( void ) { struct timeval tv; struct timezone tz; timestamp_t timestamp = 0; struct tm when; timestamp_t localeOffset = 0; { // add localtime to UTC localtime_r ( (time_t*)&timestamp, &when); localeOffset = when.tm_gmtoff * 1000; } gettimeofday (&tv, &tz ); timestamp = ((timestamp_t)((tv.tv_sec) * 1000) ) + ( (timestamp_t)((tv.tv_usec) / 1000) ); timestamp+=localeOffset; return timestamp; } /* ----------------------------------------------------------------------------- */ int32_t timestampToStructtm ( timestamp_t timestamp, struct tm* dateStruct) { timestamp /= 1000; // required timestamp in seconds! //localtime_r ( &timestamp, dateStruct); gmtime_r ( &timestamp, dateStruct); return 0; } /* ----------------------------------------------------------------------------- */ int32_t sprintf_timestampAsYYYYMMDDHHMMSS ( char* buf, timestamp_t timestamp ) { int year = 0; int month = 0; int day = 0; int hour = 0; int minute = 0; int second = 0; struct tm timeStruct; if (timestamp==TIMESTAMP_NULL) { return sprintf(buf, "NULL_TIMESTAMP"); } memset (&timeStruct, 0, sizeof (struct tm)); timestampToStructtm(timestamp, &timeStruct); year = timeStruct.tm_year + 1900; month = timeStruct.tm_mon + 1; day = timeStruct.tm_mday; hour = timeStruct.tm_hour; minute = timeStruct.tm_min; second = timeStruct.tm_sec; return sprintf(buf, "%04d%02d%02d%02d%02d%02d", year, month, day, hour, minute, second); }