6.1.1. Получение текущего времени: time() и difftime()

6.1.1. Получение текущего времени: time() и difftime()

Системный вызов time() получает текущие дату и время; difftime() вычисляет разницу между двумя значениями time_t:

#include <time.h> /* ISO С */

time_t time(time_t *t);

double difftime(time_t time1, time_t time0);

time() возвращает текущее время. Если параметр t не равен NULL, переменная, на которую указывает t, также заполняется значением текущего времени. Функция возвращает (time_t)(-1), если была ошибка, устанавливая errno.

Хотя ISO С не указывает, чем является значение time_t, POSIX определяет, что оно представляет время в секундах. Поэтому это предположение является обычным и переносимым. Например, чтобы посмотреть, что значение времени представляет отметку в прошлом шесть месяцев назад или позже, можно использовать код, подобный этому:

/* Для краткости проверка ошибок опущена */

time_t now, then, some_time;

time(&now); /* Получить текущее время */

then = now - (6L * 31 * 24 * 60 * 60); /* Примерно 6 месяцев назад */

/* ...установить какое-нибудь время, например, через stat()... */

if (some_time < then)

 /* более 6 месяцев назад */

else

 /* менее 6 месяцев назад */

Однако, поскольку переносимый код может потребоваться запустить на не-POSIX системах, существует функция difftime() для вычисления разницы между двумя значениями времени. Тот же самый тест с использованием difftime() можно было бы написать таким способом:

time_t now, some_value;

const double six_months = 6.0 * 31 * 24 * 60 * 60;

time(&now); /* Получить текущее время */

/* ...установить какое-нибудь время, например, через stat()... */

if (difftime(now, some_time) >= six_months)

 /* более 6 месяцев назад */

else

 /* менее 6 месяцев назад */

Возвращаемым типом difftime() является double, поскольку time_t может также содержать доли секунд. На системах POSIX он всегда представляет целые секунды.

В обоих предыдущих примерах обратите внимание на использование типизированных констант, чтобы форсировать выполнение вычислений с нужным математическим типом: 6L в первом случае для целых long, 6.0 во втором случае для чисел с плавающей точкой

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

А.2.4.1 Характер изменения во времени (Time behavior)

Из книги ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ ОЦЕНКА ПРОГРАММНОЙ ПРОДУКЦИИ ХАРАКТЕРИСТИКИ КАЧЕСТВА И РУКОВОДСТВА ПО ИХ ПРИМЕНЕНИЮ автора Автор неизвестен

А.2.4.1 Характер изменения во времени (Time behavior) Атрибуты программного обеспечения, относящиеся к временам отклика и обработки и к скоростям выполнения его


Властелин времени Time Boss

Из книги Защита вашего компьютера автора Яремчук Сергей Акимович

Властелин времени Time Boss Это еще одна программа, назначение которой – управление временем работы пользователей, зарегистрированных в системе Windows. С помощью Time Boss можно также запретить запуск определенного вида программ (например, для работы в Интернете) или ограничить


Определение текущего компоновочного блока

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Определение текущего компоновочного блока Следующей задачей является определение компоновочного блока, который вы хотите построить. Это делается с помощью директивы .assembly. В простейшем случае компоновочный блок можно определить с помощью простого указания понятного


Сохранение текущего документа

Из книги Office 2007. Мультимедийный курс автора Мединов Олег

Сохранение текущего документа Для сохранения текущего документа в состав меню Кнопки «Office» включены команды Сохранить, которая активизируется также нажатием Shift+F12, и Сохранить как.Команду Сохранить применяют, как правило, для сохранения изменений в текущем документе


1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени "В ранние мини-компьютерные времена Unix" вынесенная в заголовок идея была довольно радикальной (машины тогда работали


1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени "В ранние мини-компьютерные времена Unix" вынесенная в заголовок идея была довольно радикальной (машины тогда работали


Пример: печать текущего каталога

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Пример: печать текущего каталога Программа 2.6 реализует очередную версию команды UNIX pwd. Размер буфера определяется значением параметра МАХ_РАТН, однако проверка ошибок все равно предусмотрена, чтобы проиллюстрировать работу функции GetCurrent-Directory.Программа 2.6. pwd: печать


7.1. Определение текущего момента времени

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

7.1. Определение текущего момента времени Самый главный вопрос при манипуляциях с датами и временем: какой сегодня день и сколько сейчас времени? В Ruby при создании объекта класса Time без параметров устанавливаются текущие дата и время.t0 = Time.newСинонимом служитTime.now: t0 =


10.1.28. Получение и изменение текущего каталога

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

10.1.28. Получение и изменение текущего каталога Получить имя текущего каталога можно с помощью метода Dir.pwd (синоним Dir.getwd). Эти имена уже давно употребляются как сокращения от «print working directory» (печатать рабочий каталог) и «get working directory» (получить рабочий каталог). На платформе


10.1.29. Изменение текущего корня

Из книги C++. Сборник рецептов автора Диггинс Кристофер

10.1.29. Изменение текущего корня В большинстве систем UNIX можно изменить «представление» процесса о том, что такое корневой каталог /. Обычно это делается из соображений безопасности перед запуском небезопасной или непротестированной программы. Метод chroot делает указанный


14.1.3. Смена текущего каталога

Из книги Linux программирование в примерах автора Роббинс Арнольд

14.1.3. Смена текущего каталога Предусмотрено два системных вызова, меняющих текущий каталог процесса: chdir() и fchdir().#include <unistd.h>int chdir(const char * pathname);int fchdir(int fd);Первый системный вызов получает имя каталога в качестве единственного аргумента; второй принимает файловый


5.1. Получение текущей даты и времени

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

5.1. Получение текущей даты и времени ПроблемаТребуется получить от пользователя компьютера текущую дату и время — либо в формате локального времени, либо в формате универсального глобального времени (Coordinated Universal Time (UTC). Григорианский календарь и високосные


11.3.1. Отображение текущего времени

Из книги автора

11.3.1. Отображение текущего времени Модуль time.so (исходный текст приведен в листинге 11.6) генерирует простую страницу, где отображается текущее время на сервере. В функции module_generate() вызывается функция gettimeofday(), возвращающая значение текущего времени (см. раздел 8.7, "Функция


18.3.6. Проверка текущего каталога

Из книги автора

18.3.6. Проверка текущего каталога Некоторые сценарии, реализующие административные задачи, можно выполнять из корневого каталога. Если производится глобальное перемещение файлов или же изменяются права доступа к файлу, несложный тест позволяет уточнить, вовлекается ли в