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 во втором случае для чисел с плавающей точкой
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Пример: печать текущего каталога
Пример: печать текущего каталога Программа 2.6 реализует очередную версию команды UNIX pwd. Размер буфера определяется значением параметра МАХ_РАТН, однако проверка ошибок все равно предусмотрена, чтобы проиллюстрировать работу функции GetCurrent-Directory.Программа 2.6. pwd: печать
14.1.3. Смена текущего каталога
14.1.3. Смена текущего каталога Предусмотрено два системных вызова, меняющих текущий каталог процесса: chdir() и fchdir().#include <unistd.h>int chdir(const char * pathname);int fchdir(int fd);Первый системный вызов получает имя каталога в качестве единственного аргумента; второй принимает файловый
Властелин времени Time Boss
Властелин времени Time Boss Это еще одна программа, назначение которой – управление временем работы пользователей, зарегистрированных в системе Windows. С помощью Time Boss можно также запретить запуск определенного вида программ (например, для работы в Интернете) или ограничить
1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени
1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени "В ранние мини-компьютерные времена Unix" вынесенная в заголовок идея была довольно радикальной (машины тогда работали
1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени
1.6.13. Правило экономии: время программиста стоит дорого; поэтому экономия его времени более приоритетна по сравнению с экономией машинного времени "В ранние мини-компьютерные времена Unix" вынесенная в заголовок идея была довольно радикальной (машины тогда работали
7.1. Определение текущего момента времени
7.1. Определение текущего момента времени Самый главный вопрос при манипуляциях с датами и временем: какой сегодня день и сколько сейчас времени? В Ruby при создании объекта класса Time без параметров устанавливаются текущие дата и время.t0 = Time.newСинонимом служитTime.now: t0 =
10.1.28. Получение и изменение текущего каталога
10.1.28. Получение и изменение текущего каталога Получить имя текущего каталога можно с помощью метода Dir.pwd (синоним Dir.getwd). Эти имена уже давно употребляются как сокращения от «print working directory» (печатать рабочий каталог) и «get working directory» (получить рабочий каталог). На платформе
10.1.29. Изменение текущего корня
10.1.29. Изменение текущего корня В большинстве систем UNIX можно изменить «представление» процесса о том, что такое корневой каталог /. Обычно это делается из соображений безопасности перед запуском небезопасной или непротестированной программы. Метод chroot делает указанный
5.1. Получение текущей даты и времени
5.1. Получение текущей даты и времени ПроблемаТребуется получить от пользователя компьютера текущую дату и время — либо в формате локального времени, либо в формате универсального глобального времени (Coordinated Universal Time (UTC). Григорианский календарь и високосные
Сохранение текущего документа
Сохранение текущего документа Для сохранения текущего документа в состав меню Кнопки «Office» включены команды Сохранить, которая активизируется также нажатием Shift+F12, и Сохранить как.Команду Сохранить применяют, как правило, для сохранения изменений в текущем документе
Определение текущего компоновочного блока
Определение текущего компоновочного блока Следующей задачей является определение компоновочного блока, который вы хотите построить. Это делается с помощью директивы .assembly. В простейшем случае компоновочный блок можно определить с помощью простого указания понятного
11.3.1. Отображение текущего времени
11.3.1. Отображение текущего времени Модуль time.so (исходный текст приведен в листинге 11.6) генерирует простую страницу, где отображается текущее время на сервере. В функции module_generate() вызывается функция gettimeofday(), возвращающая значение текущего времени (см. раздел 8.7, "Функция
18.3.6. Проверка текущего каталога
18.3.6. Проверка текущего каталога Некоторые сценарии, реализующие административные задачи, можно выполнять из корневого каталога. Если производится глобальное перемещение файлов или же изменяются права доступа к файлу, несложный тест позволяет уточнить, вовлекается ли в
А.2.4.1 Характер изменения во времени (Time behavior)
А.2.4.1 Характер изменения во времени (Time behavior) Атрибуты программного обеспечения, относящиеся к временам отклика и обработки и к скоростям выполнения его