Функции работы с датой и временем
Типы, определенные в библиотеке time.h
Для определения текущего календарного времени используется функция
Данная функция возвращает время в секундах начиная с 1 января 1970 г.
Структура tm имеет вид
осуществляет обратное преобразование.
Функция возвращает количество символов (исключая нулевой) в результирующей строке. Если результирующая строка (включая нулевой символ) содержит больше, чем max символов, функция возвращает 0, а содержимое s не определено.
| Спец. | Назначение |
| %a | Локальное сокращенное название дня недели |
| %A | Локальное полное название дня недели |
| %b | Локальное сокращенное название месяца |
| %B | Локальное полное название месяца |
| %c | Локальный разделитель даты и времени |
| %d | День месяца в виде десятичного числа (01-31) |
| %D | Эквивалент %m%d%y |
| %e | День месяца (десятичное число): однозначные числа дополнены пробелом |
| %F | Эквивалент %Y-%m-%d |
| %g | Последние два разряда года (00-99) |
| %G | Год в виде десятичного числа |
| %H | Часы (по 24-часовой шкале) в виде десятичного числа (00-23) |
| %I | Часы (по 12-часовой шкале) в виде десятичного числа (01-12) |
| %j | День года в виде десятичного числа (001-366) |
| %m | Месяц в виде десятичного числа (01-12) |
| %n | Символ новой строки |
| %M | Минуты в виде десятичного числа (00-59) |
| %p | Локальный эквивалент a.m./p.m. для 12-часовой временной шкалы |
| %r | Локальное 12-часовое время |
| %R | Эквивалент %H:%M |
| %S | Секунды в виде десятичного числа (00-61) |
| %t | Символ горизонтальной табуляции |
| %T | Эквивалент %H:%M:%S |
| %u | Номер дня недели (1-7), где 1 соответствует понедельнику |
| %U | Номер недели в году, считая воскресенье первым днем недели (00-53) |
| %w | Номер дня недели в виде десятичного числа, начиная с воскресенья (0-6) |
| %W | Номер недели в году, считая понедельник первым днем недели (00-53) |
| %y | Год без века в виде десятичного числа (00-99) |
| %Y | Год с веком в виде десятичного числа |
| %z | Смещение от UTC («-800» означает на 8 ч по Гринвичу западнее). |
| %Z | Наименование часового пояса (если доступно) |
| %% | % (то есть знак процента). |
Функция, позволяющая вывести день недели на русском языке
Результат выполнения 
Добавление нескольких дней к текущему времени
Рассмотрим еще один пример. Допустим, требуется добавить несколько дней к текущей дате.
Реализация на Си
Реализация функции задержки
Комментариев к записи: 17
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#define ADD_DAYS 300
#define BUFF_SIZE 40
Linux.yaroslavl.ru
Эта глава посвящен функциям работы со временем (прошедшем, текущим или вычисленным) и для вычислений, использующих время.
Файл time.h определяет три типа: clock_t и time_t оба служат для представления времени в удобном для произведения арифметических операций виде (В этой реализации величины типа clock_t имеют наивысшую точность, воэможную для данного компьютера, а точность величин типа time_t составляет одну секунду.), тип size_t определен для представления размеров.
В time.h также определяется структура tm для стандартного представления времени по грегорианскому календарю как цепочки чисел со следующими полями: tm_sec
День недели: число дней с воскpесенья.
Число дней, пpошедших с пеpвого янваpя.
_asctime_r является повторно входимой версией функции asctime.
Возвращается yказатель на строку, содержащую отформатированное значение timestamp.
Стандарт ANSI требует наличия функции asctime.
asctime не требует никаких процедур ОС.
Стандарт ANSI требует наличия функции clock и макро CLOCKS_PER_SEC.
Требуется процедура ОС: times.
Возвращается yказатель на строку, содержащую отформатированное значение timestamp.
Стандарт ANSI требует наличия функции ctime.
ctime не требует никаких процедур ОС.
Выдается pазница (в секундах) между tim2 и tim1, типа double.
Стандарт ANSI требует наличия функции difftime, и определяет, что pезyльтат должен выдаваться в секyндах во всех реализациях.
difftime не требует никаких процедур ОС.
gmtime создает традиционное представление времени в статической памяти, каждый вызов gmtime или localtime переписывает это представление, созданное какой-либо из этих функций.
Возвращается указатель на традиционное представление времени (struct tm).
Стандарт ANSI требует наличия функции gmtime.
gmtime не требует никаких процедур ОС.
localtime создает традиционное представление времени в статической памяти, каждый вызов gmtime или localtime переписывает это представление, созданное какой-либо из этих функций.
Возвращается yказатель на традиционное представление времени (struct tm).
Стандарт ANSI требует наличия функции localtime.
localtime не требует никаких процедур ОС.
Стандарт ANSI требует наличия функции mktime.
mktime не требует никаких процедур ОС.
Для управления форматированием вывода используется строка в format. *format может содержать два типа спецификаций: текст для прямого копирования в форматируемую строку и спецификации преобразования времени. Спецификации преобразования времени состоят из последовательностей из двух знаков, начинающихся с % (%% включает знак процента в вывод). Каждая определенная спецификация преобразования выбирает поле в календарного времени, записанного в *timp, и преобразовывает его в строку одним из следующих способов: %a
Сокращение для дня недели.
Полное имя для дня недели.
Сокращение для названия месяца.
Строка, представляющая полную дату и время в виде Mon Apr 01 13:13:13 1992
День месяца, представленный двумя цифрами.
Час (на 24-часовых часах), представленный двумя цифрами.
Час (на 12-часовых часах), представленный двумя цифрами.
Число дней в году, представленное тремя цифрами (от 001 до 366).
Номер месяца, представленный двумя цифрами.
Минута, представленная двумя цифрами.
Секунда, представленная двумя цифрами.
Номер недели, представленный двумя цифрами (от 00 до 53; первая неделя считается начавшейся в первое воскресенье года). Смотрите также %w.
Другая версия номера недели: как %u, но считая первую неделю с первого понедельника года.
o %x Строка, полностью представляющая дату в формате Mon Apr 01 1992
Строка, представляющая полное время дня (часы, минуты и секунды) в формате 13:13:13
Последние две цифры года.
Полный год, фоpматиpованный в четыpе цифpы.
Определенно в ANSI C для выделения временного промежутка, если это возможно; в данной реализации это отсутствует (%z допускается, но по нему ничего не выводится).
Если отформатированное время занимает не более чем maxsize знаков, то выдается длина отформатированной строки. В противном случае, если форматирование было прекращено из-за нехватки места, то выдается 0 0 и строка, начинающаяся в s, соответствует тем частям *format, которые могут быть полностью представлены в пределе maxsize знаков.
Стандарт ANSI требует наличия функции strftime, но не определяет содержимое *s, если отформатированная строка занимает больше чем maxsize знаков.
strftime не требует никаких процедур ОС.
Стандарт ANSI требует наличия функции time.
В некотоpых pеализациях тpебyется пpоцедypа ОС gettimeofday.
Include time h что это
Эта глава посвящен функциям работы со временем (прошедшем, текущим или вычисленным) и для вычислений, использующих время.
Файл time.h определяет три типа: clock_t и time_t оба служат для представления времени в удобном для произведения арифметических операций виде (В этой реализации величины типа clock_t имеют наивысшую точность, воэможную для данного компьютера, а точность величин типа time_t составляет одну секунду.), тип size_t определен для представления размеров.
В time.h также определяется структура tm для стандартного представления времени по грегорианскому календарю как цепочки чисел со следующими полями: tm_sec
День недели: число дней с воскpесенья.
Число дней, пpошедших с пеpвого янваpя.
_asctime_r является повторно входимой версией функции asctime.
Возвращается yказатель на строку, содержащую отформатированное значение timestamp.
Стандарт ANSI требует наличия функции asctime.
asctime не требует никаких процедур ОС.
Стандарт ANSI требует наличия функции clock и макро CLOCKS_PER_SEC.
Требуется процедура ОС: times.
Возвращается yказатель на строку, содержащую отформатированное значение timestamp.
Стандарт ANSI требует наличия функции ctime.
ctime не требует никаких процедур ОС.
Выдается pазница (в секундах) между tim2 и tim1, типа double.
Стандарт ANSI требует наличия функции difftime, и определяет, что pезyльтат должен выдаваться в секyндах во всех реализациях.
difftime не требует никаких процедур ОС.
gmtime создает традиционное представление времени в статической памяти, каждый вызов gmtime или localtime переписывает это представление, созданное какой-либо из этих функций.
Возвращается указатель на традиционное представление времени (struct tm).
Стандарт ANSI требует наличия функции gmtime.
gmtime не требует никаких процедур ОС.
localtime создает традиционное представление времени в статической памяти, каждый вызов gmtime или localtime переписывает это представление, созданное какой-либо из этих функций.
Возвращается yказатель на традиционное представление времени (struct tm).
Стандарт ANSI требует наличия функции localtime.
localtime не требует никаких процедур ОС.
Стандарт ANSI требует наличия функции mktime.
mktime не требует никаких процедур ОС.
Для управления форматированием вывода используется строка в format. *format может содержать два типа спецификаций: текст для прямого копирования в форматируемую строку и спецификации преобразования времени. Спецификации преобразования времени состоят из последовательностей из двух знаков, начинающихся с % (%% включает знак процента в вывод). Каждая определенная спецификация преобразования выбирает поле в календарного времени, записанного в *timp, и преобразовывает его в строку одним из следующих способов: %a
Сокращение для дня недели.
Полное имя для дня недели.
Сокращение для названия месяца.
Строка, представляющая полную дату и время в виде Mon Apr 01 13:13:13 1992
День месяца, представленный двумя цифрами.
Час (на 24-часовых часах), представленный двумя цифрами.
Час (на 12-часовых часах), представленный двумя цифрами.
Число дней в году, представленное тремя цифрами (от 001 до 366).
Номер месяца, представленный двумя цифрами.
Минута, представленная двумя цифрами.
Секунда, представленная двумя цифрами.
Номер недели, представленный двумя цифрами (от 00 до 53; первая неделя считается начавшейся в первое воскресенье года). Смотрите также %w.
Другая версия номера недели: как %u, но считая первую неделю с первого понедельника года.
o %x Строка, полностью представляющая дату в формате Mon Apr 01 1992
Строка, представляющая полное время дня (часы, минуты и секунды) в формате 13:13:13
Последние две цифры года.
Полный год, фоpматиpованный в четыpе цифpы.
Определенно в ANSI C для выделения временного промежутка, если это возможно; в данной реализации это отсутствует (%z допускается, но по нему ничего не выводится).
Если отформатированное время занимает не более чем maxsize знаков, то выдается длина отформатированной строки. В противном случае, если форматирование было прекращено из-за нехватки места, то выдается 0 0 и строка, начинающаяся в s, соответствует тем частям *format, которые могут быть полностью представлены в пределе maxsize знаков.
Стандарт ANSI требует наличия функции strftime, но не определяет содержимое *s, если отформатированная строка занимает больше чем maxsize знаков.
strftime не требует никаких процедур ОС.
Стандарт ANSI требует наличия функции time.
В некотоpых pеализациях тpебyется пpоцедypа ОС gettimeofday.
Time.h
time.h
time.h — заголовочный файл стандартной библиотеки языка программирования СИ, содержащий типы и функции для работы с датой и временем.
Содержание
Вступление
Некоторые функции могут работать с местным временем, которое может отличаться от календарного, например в связи с часовыми поясами. Определены арифметические типы clock_t и time_t для представления времени, а структура struct tm содержит компоненты календарного времени.
| Имя | Описание |
|---|---|
| int tm_sec; | Секунды от начала минуты(0,61) |
| int tm_min; | Минуты от начала часа(0,59) |
| int tm_hour; | Часы от полуночи(0,23) |
| int tm_mday; | Число месяца(1,31) |
| int tm_mon; | Месяцы после января(0,11) |
| int tm_year; | Годы с 1900 |
| int tm_wday; | Дни с воскресенья(0,6) |
| int tm_yday; | Дни с первого января(0,365) |
| int tm_isdst; | Признак летнего времени |
Поле tm_isdst имеет положительное значение, если активен режим летнего времени, нуль в противном случае и отрицательное значение, если информация о сезоне времени недоступна/неизвестна.
Основные функции
double difftime(time_t time2,time_t time1)
time_t mktime(struct tm *tp)
char *asctime(const struct tm *tp)
Преобразует время из структуры *tp в строку вида «Sun Jan 3 15:14:13 1988\n\0»
Константы
Типы данных
Нелинейное, дискретное календарное представление времени.
Пример использования
Вывод на экран текущего времени.
Ссылки
Полезное
Смотреть что такое «Time.h» в других словарях:
Time — Time, n.; pl.
Time — • Article explores two questions, What are the notes, or elements, contained in the subjective representation of time? and To what external reality does this representation correspond? Catholic Encyclopedia. Kevin Knight. 2006. Time Time … Catholic encyclopedia
Time’s Up! — is a grassroots environmental group that seeks to promote a more sustainable, less toxic New York City. For 20 years, it has been committed to improving the environment by empowering individuals to become active in their community. In New York… … Wikipedia
TIME — (magazine) Pour les articles homonymes, voir Time. Time Magazine <<
time — ► NOUN 1) the indefinite continued progress of existence and events in the past, present, and future, regarded as a whole. 2) a point of time as measured in hours and minutes past midnight or noon. 3) the favourable or appropriate moment to do… … English terms dictionary
TIME — Erstausgabe 1923 Beschreibung Nachrichtenmagazi … Deutsch Wikipedia
Time — Time … Deutsch Wikipedia
Time.h — Saltar a navegación, búsqueda time.h es un archivo de cabecera de la biblioteca estándar del lenguaje de programación C que contiene funciones para manipular y formatear la fecha y hora del sistema. Contenido 1 Funciones 2 Constantes 3 Tipo … Wikipedia Español
Time UK — is a computer retailer set up by the people behind the failed Time Computer Systems.The company is based within the main factory offices at Time Technology Park in Simonstone, near Burnley in Lancashire. The company specializes in providing… … Wikipedia
TIME — Premier élément d’un gigantesque empire de presse dont l’histoire est intimement liée à l’action d’une des plus fortes personnalités du journalisme américain, Henry R. Luce (1903 1967), et à son ami Britton Hadden. La création du Time Weekly News … Encyclopédie Universelle
Include time h что это
Эта глава описывает функции для управления датой и временем, включая функции для определения текущего времени и преобразование между различными представлениями времени.
Если вы пробуете оптимизировать вашу программу или измерять эффективность, очень полезно знать, сколько времени процессора или CPU времени она использовала в любой заданной точке. Процессорное время является отличным от фактических часов, потому что оно не включает все потраченное время на ожидание ввода-вывода или когда выполняется некоторый другой процесс. Процессорное время представляется типом данных clock_t, и дано как ряд импульсов времени относительно произвольного базового времени, отмечающего начало одиночного вызова программы.
Запрос Основного Времени CPU
Чтобы получить прошедшее CPU время, используемое процессом, Вы можете использовать функцию clock. Это средство объявлено в заглавном файле » time.h «.
Обычно, Вы вызываете функцию clock в начале и конца интервала, который Вы хотите измерить, вычитаете значения, и тогда делите на CLOCKS_PER_SEC (число импульсов времени clock в секунду), примерно так:
Детализированный Запрос Времени CPU
Функция times возвращает более детализированную информацию относительно прошедшего процессорного времени в struct tmsobject. Вы должны включить заглавный файл » sys/times.h » чтобы использовать это средство.
Этот раздел описывает средства для слежения за датами и временем согласно Грегорианскому календарю.
Простое Календарное Время
Этот раздел описывает time_t тип данных для представления календарного времени, и функции, которые используют объекты календарного времени. Эти средства объявлены в заглавном файле » time.h «.
В других системах, time_t может быть или целым числом или с плавающей запятой.
В системе GNU, Вы можете просто вычитать значения time_t. Но в других системах, time_t тип данных может использовать некоторое другое кодирование, где вычитание не работает непосредственно.
Календарь с высоким разрешением
Тип данных time_t, используемый, чтобы представить календарное вермя имеет разрешающую способность только в одну секунду.
Некоторые приложения нуждаются в большей точности.
Так, библиотека GNU C также содержит функции, которые способны представить календарь с более высокой разрешающей способностью чем одна секунда. Функции и связанные типы данных, описанные в этом разделе объявлены в » sys/time.h «.
Часто необходимо вычесть два значения типа struct timeval. Вот самый лучший способ делать это. Он работает даже на некоторых специфических операционных системах, где tv_sec элемент имеет тип unsigned.
Вы должны быть привилегированным пользователем, чтобы использовать settimeofday.
Этот процесс не может устанавливать время, потому что он не привилегированный. ENOSYS
Аргумент delta определяет относительную корректировку, которая будет сделана относительно текущего времени. Если он отрицателен, часы системы замедляются. Если положителен, часы системы ускоряются.
Эта функция обычно используется, чтобы синхронизировать часы компьютеров в местной сети.
Разделенное Время
Календарное время представляется как число секунд. Это удобно для вычисления, но не имеет никакого отношения к способу, которым люди обычно представляют даты и время. Нпротив, разделенное время двоичное представление, разделенное на год, месяц, день, и так далее.
Разделенное время всегда зависит от выбора зоны местного времени, и оно также указывает, какой часовой пояс использовался.
Символы в этом разделе объявлены в заглавном файле » time.h «.
Tm_gmtoff поле расширение библиотеки GNU.
Вызов localtime имеет и другой эффект: она устанавливает переменную tzname с информацией относительно текущего часового пояса. См. Раздел 17.2.6 [Функции Часового пояса].
Вспомните, что календарное время всегда выражается в координированном универсальном времени.
Mktime функция игнорирует заданное содержимое tm_wday и tm_yday элементов структуры разделенного времени. Она использует значения других компонентов, чтобы вычислить календарное время; для этих компонентов допустимо иметь ненормализованные значения вне их нормальных диапазонов. Еще mktime корректирует компоненты структуры brokentime (включая tm_wday и tm_yday).
Если заданное разделенное время не может представляться как календарное время, mktime, возвращает значение (time_t) (-1) и не изменяет содержимое brokentime.
Вызов mktime также устанавливает переменную tzname с информацией относительно текущего часового пояса. См. Раздел 17.2.6 [Функции Часового пояса].
Форматирование Даты и времени
Функции, описанные в этом разделе форматирнуют значения времени как строки. Эти функции объявлены в заглавном файле » time.h «.
Сокращения для месяцев: `Jan’, `Feb’, `Mar’, `Apr’, `May’, `Jun’, `Jul’, `Aug’, `Sep’, `Oct’, `Nov’, and `Dec’.
Возвращаемое значение указывает на статически размещенную строку, которая могла бы быть записана поверх последующими обращениями к любой из функций date и time. (Но никакая другая библиотечная функция не записывает поверх содержимого этой строки.)
Для примера strftime, см. Раздел 17.2.7 [Пример Функции Времени].
Определение Часового пояса с TZ
В системе GNU, пользователь может определять часовой пояс посредством TZ переменной среды.
Для уточнения инфрмации относительно того, как устанавливать переменные среды, см. Раздел 22.2 [Переменные среды]. Функции для доступа к часовому поясу объявлены в » time.h «.
Значение TZ переменной может иметь один из трех форматов. Первый формат используется, когда не имеется никакого Смещения светового дня (или в летнее время) в зоне местного времени:
Например, вот, как мы определили бы Восточное Стандартное Время, но без любых Смещений Светового дня:
Третий формат походит на:
Если переменная среды TZ не имеет значения, операция выбирает часовой пояс по умолчанию. Каждая операционная система имеет собственные правила для выбора заданного по умолчанию часового пояса, так что относительно этого мы можем сказать совсем немного.
Функции и Переменные для Часовых поясов
Следующие переменные определены для совместимости с System V Unix. Эти переменные устанавливаются вызоввом localtime.
Пример Функции Времени
Вот пример программы, показывающий использование некоторых функций местного и календарного времени.
Функции alarm и setitimer обеспечивают механизм прерывания процесса, в некоторое время. Они делают это, устанавливая таймер; когда время таймер истекает, процесс получает сигнал.
Тип данных Struct timeval описан в Разделе 17.2.2 [Календарь с высоким разрешением].
интервал таймера был слишком большой.
Возвращаемое значение указывает, сколько секунд оставалось прежде, чем предыдущий сигнал был бы послан. Если не было никакого предыдущего сигнала, alarm возвращает нуль.
Функция alarm могла бы быть определена в терминах setitimer примерно так:
Если Вы просто хотите, чтобы ваш процесс ждал данное число секунд, Вы должен использовать функцию sleep. См. Раздел 17.4 [Sleep].
Вы не должны рассчитать на сигнал, прибывающий точно, когда таймер истекает. В многопроцессорной среде имеется обычно некоторая задержка.
Функция sleep объявлена в » unistd.h «.
Вы можете использовать select и делать период ожидания, совершенно точным. (Конечно, загрузка системы может вызывать неизбежные дополнительные задержки, если машина не специализирована одному приложению, не имеется никакого способа, которым Вы можете избежать этого.)
Функция getrusage и тип данных struct rusage используется для исследования типа использования процесса. Они объявлены в » sys/resource.h «.
В большинстве систем, processes имеет только два допустимых значения:
В системе GNU, Вы можете также запрашивать относительно специфического дочернего процесса, определяя ID процесса.
Аргумент EINVAL processes не допустим.
Дополнительная историческая функция для исследования типов использования, vtimes, обеспечивается но здесь не описана. Она объявлена в » sys/vtimes.h «.
Вы можете определять ограничения использования ресурса для процесса. Когда процесс пробует превышать ограничение, он может терпеть неудачу, в зависимости от ограничения. Каждый процесс первоначально наследует значения ограничений от родителя, но он может впоследствии изменять их.
Символы в этом разделе определены в » sys/resource.h «.
Вы пробовали изменять максимально допустимое значение ограничения, но Вы не имеете привилегий, чтобы сделать это.
Rlim_cur Текущее значение рассматриваемого ограничения.
Rlim_max Максимально допустимое значение рассматриваемого ограничения. Вы не можете устанавливать текущее значение ограничения больше чем этот максимум. Только root может изменять максимально допустимое значение.
Вот список ресурсов, для которых Вы можете определять ограничения.
Две исторических функции для установки ограничений ресурса, ulimit и vlimit, не зарегистрированы здесь. Они объявлены в » sys/vlimit.h » и исходят ИЗ BSD.
Когда отдельные процессы выполняются, их приоритеты определяют то, какую часть ресурсов CPU каждый процесс получает. Этот раздел описывает, как Вы можете читать и устанавливать приоритет процесса. Все эти функции и макрокоманды объявлены в » sys/resource.h «.
комбинация class и id не соответствует никакому существующему процессу. EINVAL
Единственый способ различить состоит в том, чтобы установить errno = 0 перед вызовом getpriority, и тогда использовать errno!= 0 позже как критерий для отказа.
комбинация class и id не соответствует никакому существующему процессу. EINVAL
значение класса не допустимо. EPERM
Вы пробовали устанавливать приоритет процесса некоторого другого пользователя, и Вы не имеете привилегий для этого. EACCES
Вы пробовали понизить приоритет процесса, и Вы не имеете привилегий для этого. Аргументы class и id вместе определяет набор процессов, которыми Вы заинтересованы. Вот возможные значения для class:




