C: установить time_t на следующие 10 вечера - PullRequest
3 голосов
/ 21 декабря 2011

Я хочу установить переменную time_t на следующую дату / время в 22:00. Так, например, если бы это было 11 вечера, он установил бы time_t на 10 часов вечера на следующий день (23 часа спустя) или, если это было 5 часов вечера, он установил бы его на 10 вечера (через 5 часов).

Я могу придумать несколько способов сделать это (например, вычислить секунды до следующих 10 вечера и добавить это значение), но все они выглядят скорее как хакерский подход. Какой лучший способ сделать это?

1 Ответ

7 голосов
/ 21 декабря 2011

Преобразуйте его в struct tm, используя, например, localtime.Если прошло более 10 вечера, добавьте один день.Установите время до 22:00.

struct tm *tm;
tm = localtime(t);
if (tm->tm_hour >= 22)
    tm->tm_mday++;

tm->hour = 22;

Преобразование обратно в time_t с использованием mktime.

...