8.7, Функция gettimeofday(): системные часы
8.7, Функция gettimeofday(): системные часы
Функция gettimeofday() определяет текущее системное время. В качестве аргумента она принимает структуру типа timeval, в которую записывается значение времени (в секундах), прошедшее с начала эпохи UNIX (1-е января 1970 г., полночь по Гринвичу). Это значение разделяется на два поля. В поле tv_sec хранится целое число секунд, а в поле tv_usec — дополнительное число микросекунд. У функции есть также второй аргумент, который должен быть равен NULL. Функция объявлена в файле <sys/time.h>.
Результат, возвращаемый функцией gettimeofday(), мало подходит для отображения на экране, поэтому существуют библиотечные функции localtime() и strftime(), преобразующие это значение в нужный формат. Функция localtime() принимает указатель на число секунд (поле tv_sec структуры timeval) и возвращает указатель на структуру типа tm. Эта структура содержит поля, заполняемые параметрами времени в соответствии с локальным часовым поясом:
? tm_hour, tm_min, tm_sec — текущее время (часы, минуты, секунды);
? tm_year, tm_mon, tm_day — год, месяц, день;
? tm_wday — день недели (значение 0 соответствует воскресенью);
? tm_yday — день года;
? tm_isdst — флаг, указывающий, учтено ли летнее время.
Функция strftime() на основании структуры tm создает строку, отформатированную по заданному правилу. Формат напоминает тот, что используется в функции printf(): указывается строка с кодами, определяющими включаемые поля структуры. Например, форматная строка вида
"%Y-%m-%d %Н:%М:%S"
соответствует такому результату:
2001-01-14 13:09:42
Функции strftime() необходимо задать указатель на текстовый буфер, куда будет помещена полученная строка, длину буфера, строку формата и указатель на структуру типа tm. Следует учесть, что ни функция localtime(), ни функция strftime() не учитывают дробную часть текущего времени (поле tv_usec структуры timeval). Об этом должен позаботиться программист.
Объявления функций localtime() и strftime() находятся в файле <time.h>.
Программа, показанная в листинге 8.6, отображает текущие дату и время с точностью до миллисекунды.
Листинг 8.6. (print-time.c) Отображение даты и времени
#include <stdio.h>
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
void print_time() {
struct timeval tv;
struct tm* ptm;
char time_string[40];
long milliseconds;
/* Определение текущего времени и преобразование полученного
значения в структуру типа tm. */
gettimeofday(&tv, NULL);
ptm = localtime(&tv.tv_sec);
/* Форматирование значения даты и времени с точностью
до секунды. */
strftime(time_string, sizeof(time_string),
"%Y-%m-%d %H:%M:%S", ptm);
/* Вычисление количества миллисекунд. */
milliseconds = tv.tv_usec / 1000;
/* Отображение даты и времени с указанием
числа миллисекунд. */
printf("%s.%03ld ", time_string, milliseconds);
}
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
14.3.1. Время в микросекундах: gettimeofday()
14.3.1. Время в микросекундах: gettimeofday() Первой задачей является получение времени дня:#include <sys/time.h>int gettimeofday(struct timeval *tv, void *tz); /* определение POSIX, а не GLIBC */gettimeofday() позволяет получить время дня.[156] В случае успеха возвращается 0, при ошибке -1. Аргументы следующие:struct timeval *tvЭтот
Аппаратные часы и таймеры
Аппаратные часы и таймеры Различные аппаратные платформы предоставляют два аппаратных устройства, которые помогают вести учет времени, — это системный таймер, о котором уже было рассказано, и часы реального времени. Реализация и поведение этих устройств могут быть
Часы реального времени
Часы реального времени Часы реального времени (real-time clock, RTC) представляют собой энергонезависимое устройство для сохранения системного времени. Устройство RTC продолжает отслеживать время, даже когда система отключена, благодаря небольшой батарее, которая обычно
Часы, таймеры и периодические уведомления
Часы, таймеры и периодические уведомления В этой главе вы изучите системные часы, таймеры, и как заставить таймеры посылать вам сообщения. В ней также много практических советов и изобилие примеров
Часы и таймеры
Часы и таймеры Пришло время рассмотреть все, что относится ко времени в QNX/Neutrino. Мы увидим, как и почему мы должны использовать таймеры, а также рассмотрим теоретические положения, которые этому сопутствуют. Далее мы обсудим способы опроса и настройки часов реального
Часы
Часы Синхронизация системных часовДля изменения интервала синхронизации системных часов компьютера с time-сервером в разделе HKLMSYSTEMControlSet001ServicesW32TimeTimeProvidersNtpClientвыбираем параметр °SpecialPollInterval° и изменяем его значение: оно должно быть равно требуемому интервалу между
Песочные часы
Песочные часы При выполнении длительных ресурсоемких операций нужно показать пользователю, что устройство работает, а не зависло. Лучше всего вывести на экран устройства курсор ожидания. В карманных компьютерах в качестве такого курсора используются не песочные часы,
Аналоговые часы
Аналоговые часы Исходный файл: Simpleclock.fla, Betterclock.fla Одной из возможностей использования ActionScript является отображение даты и текущего времени на компьютере пользователя. Это осуществляется благодаря объекту Date. Этот объект может использоваться различными способами,
Часы
Часы Существует несколько интересных трюков, позволяющих изменять режимы отображения часов, которые расположены в правом нижнем углу экрана.В разделе реестра HKEY_CURRENT_USERControl PanelInternational содержится строковый параметр sTimeFormat, которому по умолчанию присвоено значение H:mm:ss.
Инструмент Часы
Инструмент Часы Инструмент Часы (см. табл. П4.5) используется для отображения часов или таймера на рабочем поле. При выборе режима Обратный отсчет… часы можно использовать как инструмент автоматического перелистывания страниц с заданием нужных параметров (время и
Инструмент Таймер/часы
Инструмент Таймер/часы Инструмент Таймер/часы (рис. 8.18) может быть использован на уроках при изучении часов, проверке техники чтения в начальных классах, выполнении заданий на время, при подготовке к публичным выступлениям и в других случаях.Инструмент может работать в
6. Часы, язык и регион
6. Часы, язык и регион Утилиты категории Часы, язык и регион позволяют установить дату и время, выбрать часовой пояс, добавить гаджет Часы на рабочий стол, установить или удалить языки отображения интерфейса, выбрать язык интерфейса (только для Ultimate), изменить раскладку
Промзона: Часы iWatch Николай Маслухин
Промзона: Часы iWatch Николай Маслухин Опубликовано 27 мая 2010 года С тех пор как мобильники стали миниатюрными и научились показывать время, продажи часов резко сократились. Действительно, зачем таскать на руке дополнительный груз, когда мобильник и