Подскажите как?
sklif 10 июня, 2005 - 11:48.Прошу прощения если вопрос наивный, но подскажите как в программе получить текущее время системы и переменной какого типа ее запомнить. Лучше с примером.
Вход в системуНавигацияНовые комментарииДругие материалы |
Подскажите как?sklif 10 июня, 2005 - 11:48.Прошу прощения если вопрос наивный, но подскажите как в программе получить текущее время системы и переменной какого типа ее запомнить. Лучше с примером. |
Re: Подскажите как?
include <time.h>
struct tm *dat; // структура tm описана в time.h
time_t tmp;
time(&tmp);
dat=localtime(&tmp);
Получаем:
dat–>tm_sec — секунды;
dat–>tm_min — минуты;
dat–>tm_hour — часы;
dat–>tm_mday — день месяца (с 1);
dat–>tm_mon — месяц (с 0);
dat–>tm_year — год–1900;
dat–>tm_wday — день недели;
dat–>tm_yday;
dat–>tm_isdst;
dat–>tm_gmtoff;
dat–>tm_zone — не использовал;
Зачем нужен вызов сначала одной, а потом другой функции получения времени, не помню (последний раз время делал по образцу с другой программы).
Re: Подскажите как?
time() возвращает кол–во секунд, прошедшее с 1 января 1970 года, а localtime() «расшифровывает» данное ей кол–во секунд в структуру tm.
Кстати, рекомендуется использовать tm* localtime_r(const time_t*, tm*), так как эта функция заполнит данную ей структуру tm, а не свою внутреннюю статическу переменную, что потенциально может быть опасно в многопоточной программе.
Re: Подскажите как?
т.е. time() возвращает целочисленную переменную типа int?
Re: Подскажите как?
time_t — это long, если бытьо точным
Кстати, есть еще и родные Бишные функции: http://www.beclan.org/BeBook/The_Kernel_Kit/Time.html
Re: Подскажите как?
Вот с этими функциями я как раз и не разобрался доконца.
real_time_clock() похоже тоже самое что и time()
real_time_clock_usecs() тоже самое но в микросекундах
set_real_time_clock() — ?
system_time() — время с начала загрузки системы в микросекундах.
а вот как их использовать?
Re: Подскажите как?
set_real_time_clock() по идее переустановит системное время (именно то кол–во секунд с 01.01.1970). Ну а как использовать это уж зависит от того, что хочется получить ;)
Например, можно использовать system_time() для вычисления текущего FPS отрисовки, для контроля времени внутри виртуального мира и т.д. Вообще, кол–во секунд (или микросекунд) однозначно определяют момент времени, так что как правило, например, в календаре достаточно хранить только кол–во секунд, а не структуру, содержащую год, месяц, день недели, час, минуту, и т.д. Кроме того, кол–во секунд очень удобно сравнивать между собой и производить с ними арифметические операции. Например:
uint32 now = real_time_clock();
ScheduleMyTask(now + 5 * 60); // сейчас + 5 минут
Re: Подскажите как?
Спасибо! Вроде стало понятно. Вообще надо это в WIKI добавить.
Отправить комментарий