Как я могу получить количество дней, начиная с эпохи в C ++, я знаю, что я должен использовать mktime
функция, но я не могу понять, как это реализовать
Спасибо!
Изменение примера кода из cplusplus.com:
#include <stdio.h>
#include <time.h>
int main ()
{
time_t seconds;
seconds = time (NULL);
int daysSinceEpoch = seconds/(60*60*24);
printf ("%ld days since January 1, 1970", daysSinceEpoch);
return 0;
}
Начните с получения текущего времени, с time(NULL)
, Передайте это значение gmtime
, который дает вам обратно tm*
, Прочитайте документацию для tm
,
С датами нелегко работать правильно. Стандартная библиотека в ее нынешнем виде не дает возможности сделать это правильно. Вы должны использовать правильную библиотеку дат, такую как boost :: date или Говард Хиннант <date>
.
С библиотекой Хиннанта код может выглядеть примерно так:
date epoch = year(1970)/jan/day(1); // Assuming you're referring to the traditional Unix epoch (some systems such as Cocoa on OS X use the first day of the millenium, Jan 1, 2001 as their epoch)
days d = date::today() - epoch;