Получение текущего часа в C с использованием time.h - PullRequest
5 голосов
/ 31 марта 2009

Всего вопросов новичка здесь; Заранее извиняюсь.

Предположим, у меня есть демон, написанный на C, который просыпается каждые пять минут или около того, выполняет некоторую обработку, если что-то есть в его входной очереди, и затем возвращается в спящий режим. Теперь предположим, что есть некоторая обработка, которую он должен выполнить только после определенного (настраиваемого) времени - скажем, в 2 часа дня (и до полуночи).

В C, какой самый быстрый и лучший способ получить час текущего времени в переменной int, чтобы его можно было легко проверить - чтобы определить, действительно ли это после 14:00 сегодня?

Ответы [ 3 ]

17 голосов
/ 31 марта 2009

LocalTime. Смотри http://linux.die.net/man/3/localtime

struct tm *tm_struct = localtime(time(NULL));

int hour = tm_struct->tm_hour;
7 голосов
/ 26 февраля 2014

Звонок localtime(time(NULL)) никогда не будет работать. Возвращаемое значение time() - time_t, а первый аргумент localtime - time_t*. Ни принятый ответ, ни неверный ответ с printf.

time_t now;
struct tm *now_tm;
int hour;

now = time(NULL);
now_tm = localtime(&now);
hour = now_tm->tm_hour;
7 голосов
/ 31 марта 2009
printf("the hour is %d\n", localtime(time(NULL))->tm_hour);

Это зависит от того, что localtime() возвращает указатель на статическое хранилище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...