标准C - 如何使用1970年1月1日以外的unix纪元时间戳?

时间:2017-10-09 22:36:54

标签: c unix-timestamp epoch time-t

时间戳定义为自2000年1月1日午夜UTC以来经过的秒数。仅使用标准C,如何使用2000年1月1日UTC而非1970年1月1日的纪元获取unix时间戳?

time(NULL)返回自1970年1月1日以来的秒数。

time_t seconds;
seconds = time(NULL); 

1 个答案:

答案 0 :(得分:-3)

我认为其他人可能会从我花在试图解决这个问题的时间中受益。如果您有一个要求,在标准C中你想要找到自1970年1月1日以外的时期以来的时间,那么你就是这样做的,

time_t secondsY2K = 946684800; // Epoch / Unix timestamp for Jan 1, 2000 https://www.epochconverter.com/timestamp-list
time_t unixEpochTime;
time(&unixEpochTime);
double seconds = difftime(unixEpochTime , epochY2k);
printf("seconds since jan 1, 2000 %.f", seconds);
printf("current time in UTC %s\n", asctime(gmtime(&unixEpochTime)));