Я пытаюсь получить количество секунд с эпохи (1970 1 января) с заданными действительными часами и минутами.
Предполагая, что данный час равен 10, а указанная минута - 30, что будет означать 10:30. Также, исходя из предположения, что это на сегодняшний день. Это было бы так:
2014 6 дек 10:30:00
Как я могу получить количество секунд от эпохи до указанной даты?
Я пробовал следующее, но в качестве результата я получил -1.
time_t now = time(0);
tm *ltm = gmtime(&now);
struct tm t;
t.tm_year = 1900 + ltm->tm_year;
t.tm_mon = 1 + ltm->tm_mon;
t.tm_mday = ltm->tm_mday;
t.tm_hour = 10;
t.tm_min = 30;
t.tm_sec = 0;
time_t timeSinceEpoch = mktime(&t);
timeSinceEpoch возвращает -1. Почему это так?
Вы можете использовать mktime(), как показано ниже.
time_t t = time(NULL);
tm* timePtr = localtime(&t);//Getting current time.
struct tm t = {0}; // Initalize to all 0's
t.tm_year = timePtr->tm_year; // This is year- 114 (1900+114=2014)
t.tm_mon = timePtr->tm_mon; //Current Month
t.tm_mday = timePtr->tm_mday; //Today date
t.tm_hour = 10; //Time you need (10)
t.tm_min = 30; //Minutes you need (30)
t.tm_sec = timePtr->tm_sec; //Current second
time_t timeSinceEpoch = mktime(&t);