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

Standard C - How to use a unix epoch timestamp other than Jan 1, 1970?

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

自 1970 年 1 月 1 日以来

time(NULL)returns 秒。

time_t seconds;
seconds = time(NULL); 

我认为其他人可能会从我花时间尝试解决这个问题中受益。如果您要求在标准 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)));