Вход/Регистрация
Разработка приложений в среде Linux. Второе издание
вернуться

Троан Эрик В.

Шрифт:

В

sys/time.h
определены пять макросов для обработки структур
timeval
.

timerclear(struct timeval *)

Данный макрос очищает структуру

timeval
.

timerisset(struct timeval *)

Данный макрос проверяет структуру

timeval
на заполнение (другими словами, отличен ли хотя бы один элемент от нуля).

timercmp(struct timeval *t0, struct timeval *t1, operator)

Данный макрос позволяет сравнивать две структуры

timeval
в одном временном интервале. Он вычисляется в логический эквивалент
t0 операция t1
, если
t0
и
t1
относятся к арифметическим типам. Обратите внимание на то, что макрос
timercmp
не работает для операций
<=
и
>=
. Вместо этого нужно применять формы
!timercmp(t1, t2, >)
и
!timercmp(t1, t2, <)
.

timeradd(struct timeval *t0, struct timeval *t1, struct timeval *result)

Добавляет

t0
к
t1
и размещает сумму в переменной
result
.

timersub(struct timeval *t0, struct timeval *t1, struct timeval *result)

Вычитает

t1
из
t0
и передает разность в переменную
result
.

Третье представление времени

struct tm
дает время в исчислении, более привычном для человека.

struct tm {

 int tm_sec;

 int tm_min;

 int tm_hour;

 int tm_mday;

 int tm_mon;

 int tm_year;

 int tm_wday;

 int tm_yday;

 int tm_isdst;

 long int tm_gmtoff;

 const char *tm_zone;

};

Первые девять элементов являются стандартными, последние два — нестандартные, однако очень полезные (они существуют в системах Linux).

tm_sec
Количество прошедших секунд в минуте. Принимает значения от 0 до 61 (две дополнительные секунды выделяются для учета лишних секунд, относящихся к високосному году).
tm_min
Количество прошедших минут в часе. Принимает значения от 0 до 59.
tm_hour
Количество прошедших часов в сутках. Принимает значения от 0 до 23.
tm_mday
Номер дня месяца. Принимает значения от 1 до 31. Это единственный элемент, который не может равняться нулю.
tm_mon
Количество прошедших месяцев в году. Принимает значения от 0 до 11.
tm_year
Количество прошедших лет (считая с 1900 года).
tm_wday
Количество прошедших дней в неделе (считая от воскресенья). Принимает значения от 0 до 6.
tm_yday
Количество прошедших дней в году. Принимает значения от 0 до 365.
tm_isdst
Определяет, поддерживается ли летнее время в текущем часовом поясе,
tm_isdst
принимает положительное значение, если время переведено на летнее, 0 — если не переведено, 1 — если система не может это определить.
tm_gmtoff
Параметр не является переносимым, поскольку он используется не во всех системах. Если он существует, то он может также называться
__tm_gmtoff
. Данная переменная указывает число секунд к востоку от UTC или отрицательное число секунд к западу от UTC для часовых поясов к востоку от линии перемены дат.
tm_zone
Параметр не является переносимым, поскольку он используется не во всех системах. Если он существует, то он может также называться
__tm_zone
. Он содержит название текущего часового пояса (некоторые часовые пояса могут иметь несколько имен).

В завершение, стандарт POSIX.1b обработки данных в режиме реального времени поддерживает даже большую разрешающую способность, чем доступные в стандарте

struct timeval
микросекунды. В структуре
struct timespec
используются наносекунды, а также выделено больше пространства для размещения чисел.

struct timespec {

 long int tv_sec; /* секунды */

 long int tv_nsec; /* наносекунды */

};

18.1.2. Преобразование, форматирование и разбор значений времени

Для взаимно-обратных преобразований времени, выраженного в показателях

time_t
, и времени, выраженного в показателях
struct tm
, используются четыре функции. Три из них являются стандартными и доступны во всех системах Linux и Unix. Четвертая, не менее полезная, может применяться не всегда, поскольку она работает только в современных системах Linux. Пятая функция (стандартная) вычисляет разность в секундах между значениями времени
time_t
. (Обратите внимание на то, что даже аргументы
time_t
передаются как указатели, а не как только аргументы
struct tm
.)

struct tm * gmtime(const time_t *t)

Сокращенная форма времени по Гринвичу; функция

gmtime
преобразует значение
time_t
в
struct tm
, которое выражает данное время в UTC.

struct tm * localtime(const time_t *t)

localtime
ведет себя подобно
gmtime
за исключением того, что создается объект
struct tm
, выраженный в показателях местного времени. Местное время определяется для всей системы путем установки файлов часовых поясов. Его можно переопределить с помощью переменной окружения
TZ
для пользователей, работающих в часовом поясе, отличном от того, в котором находится компьютер.

time_t mktime(struct tm *tp);

mktime
преобразует
struct tm
в
time_t
, предполагая, что
struct tm
выражается в показателях местного времени.

time_t timegm(struct tm *tp);

timegm
ведет себя подобно
mktime
за исключением предположения о том, что
struct tm
выражается в показателях UTC. Данная функция не является стандартной.

double difftime(time_t time1, time_t time0);

  • Читать дальше
  • 1
  • ...
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: