C ++ Количество секунд с начала эпохи с указанным часом и минутой

0

Я пытаюсь получить количество секунд с эпохи (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. Почему это так?

Теги:
time
epoch

1 ответ

4
Лучший ответ

Вы можете использовать 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);
  • 0
    Вместо этого я хотел бы получить год, месяц, день из системы. Только поля часа, минуты и секунды задаются через переменные. Могу ли я узнать, почему tm_year = 114?
  • 0
    @Wallace :: Я отредактировал код, чтобы удовлетворить ваши потребности. Также обратите внимание, что tm_year будет лет с 1900 года.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню