Разработка приложений в среде Linux. Второе издание
Шрифт:
18.1. Вывод времени и даты
18.1.1. Представление времени
В системах Unix и Linux время отслеживается в секундах до или после начала эпохи, которое определяется как полночь 1 января 1970 года по UTC [148] . Положительные значения времени относятся к периоду после начала эпохи; отрицательные — до начала эпохи. Для того чтобы обеспечить работу процессов в режиме текущего времени, в Linux, как и во всех остальных версиях Unix, предусмотрен системный вызов
148
UTC — Universal Coordinated Time (универсальное синхронизированное время), на которое иногда ошибочно ссылаются
Функция
Для решения некоторых проблем требуется более высокая разрешающая способность. В Linux предусмотрен еще один системный вызов —
На большинстве платформ, включая i386, система Linux поддерживает возможность очень точного измерения времени. Стандартные персональные компьютеры содержат встроенные часы, которые обеспечивают информацию о текущем времени с точностью до микросекунд. Оборудование Alpha и SPARC также предлагает высокоточный таймер. На некоторых других платформах система Linux может отслеживать время только в пределах разрешающей способности системного таймера, который в общем случае устанавливается на значение 100 Гц. В связи с этим член
В
Данный макрос очищает структуру
Данный макрос проверяет структуру
Данный макрос позволяет сравнивать две структуры
Добавляет
Вычитает
Третье представление времени
Первые
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 обработки данных в режиме реального времени поддерживает даже большую разрешающую способность, чем доступные в стандарте
18.1.2. Преобразование, форматирование и разбор значений времени
Для взаимно-обратных преобразований времени, выраженного в показателях