time (1115162)
Текст из файла
1Работа с календарным временем и интервалами времениВ данном разделе рассматриваются функции работы с календарным временем и интервалами времени в операционных системах, удовлетворяющих стандарту POSIX.1.1 Работа с календарным временем (ANSI C)Типы данныхКалендарное время включает в себя год, месяц, день месяца и текущее время суток. Дляхранения календарного времени используется тип time_t. В POSIX-системах календарноевремя хранится как количество секунд, прошедшее от «начала эпохи», причём для простотысчитается, что каждый 4-й год всегда високосный.
Эпоха началась (для UNIX) в полночь 1января 1970 г. по Гринвичу. Время отсчитывается по часовому поясу Гринвичского меридианабез перехода на летнее время (так называемое «Универсальное координированное время»UTC — Coordinated Universal Time).В настоящее время в POSIX-системах тип time_t эквивалентен типу long. Диапазоназначений типа long (32 бита) достаточно для представления дат, лежащих в отрезке длинойпримерно 136 лет. Поскольку отрицательные числа используются для представления дат до1970 года, переполнение текущего представления типа time_t может произойти в 2038 году,если, конечно, до этого момента представление не будет изменено.Для более удобного представления календарного времени используется тип struct tm,определённый следующим образом.struct tm{intintintintintintintintint};tm_sec;tm_min;tm_hour;tm_mday;tm_mon;tm_year;tm_wday;tm_yday;tm_isdst;/*/*/*/*/*/*/*/*/*секунды [0-60] */минуты [0-59] */час [0-23] */день месяца [1-31] */месяц [0-11], 0 = январь */число лет от 1900 г */день недели [0-6], 0 = воскр.
*/день года [0-365] */летнее время */Поле tm_sec обычно хранит значения в интервале от 0 до 59, но может хранить и 60, когдадля коррекции времени в календарь вставляется дополнительная секунда.Поле tm_year хранит год, отсчитываемый от 1900 года, то есть, например, значение 100в поле tm_year означает 2000 год.Поле tm_wday хранит день недели, отсчитываемый от воскресенья (значение 0) и до субботы (значение 6).Поле tm_isdst хранит информацию о том, действует ли в описываемый момент летнее время. Этот флаг больше нуля, если летнее время действует, нуль, если летнее время недействует, и отрицателен, если информация о действии летнего времени отсутствует.Оба описанных выше типа определены в заголовочном файле <time.h>, определённомстандартом ANSI C, то есть должны присутствовать в любой достаточно современной систе1ме программирования на Си.
Стандарт ANSI не определяет внутреннее представление длятипа time_t.ФункцииВ стандарте ANSI C также определяется набор функций для манипулирования с календарным временем. Прототипы этих функций определены в заголовочном файле <time.h>.Функция time позволяет получить текущее системное календарное время. Функция имеет следующий прототип:time_t time(time_t *pval);Функция возвращает текущее календарное время. Кроме того, если указатель pval ненулевой, функция записывает текущее время по указанному адресу.Функции localtime, gmtime преобразовывают дату из секундного представленияtime_t в структурное представление struct tm.
Они имеют следующие прототипы:struct tm *gmtime(const time_t *timep);struct tm *localtime(const time_t *timep);extern char *tzname[2];long int timezone;Функция gmtime конвертирует календарное время timep в развёрнутое структурное представление, выражающее универсальное координированное время (UTC), т. е. время Гринвичского меридиана без перехода на летнее время. Функция возвращает указатель на статическую область памяти, которая переписывается при каждом вызове функций работы с календарным временем. Поэтому при необходимости эту структуру нужно скопировать в другоеместо.Функция localtime конвертирует календарное время timep в развёрнутое структурное представление в определённом пользователем или системой часовом поясе. Функцияустанавливает переменную tzname в имя текущего часового пояса (tzname[0] — имя часового пояса зимнего времени, tzname[1] — имя часового пояса летнего времени), переменную timezone в разницу в секундах между поясным временем и универсальным координированным временем (UTC).
Функция возвращает указатель на статическую областьпамяти, которая переписывается при каждом вызове функций работы с календарным временем. Поэтому при необходимости эту структуру нужно скопировать в другое место.Функция mktime конвертирует календарное время местного часового пояса в развёрнутом структурном формате в секундное представление. Функция имеет следующий прототип:time_t mktime(struct tm *timeptr);Функция игнорирует содержимое полей tm_wday, tm_yday, tm_isdst и перевычисляетих, используя оставшиеся поля структуры. Если значение какого-либо поля структуры находится за пределами допустимых значений, оно нормализуется, например, 40 октября становится 9 ноября.
Вызов mktime заполняет переменную tzname информацией о местномчасовом поясе. Если заданное структурное представление не может быть преобразовано впосекундное представление, функция возвращает значение (time_t)(-1) и не изменяетзначения полей tm_wday и tm_yday.Функции ctime и asctime конвертируют календарное время в символьную строку.
Ониимеют следующие прототипы:2char *asctime(const struct tm *timeptr);char *ctime(const time_t *timep);Функция ctime преобразует календарное время timep в строку вида"Tue Nov7 11:32:11 2000\n"Дни недели сокращаются до ‘Sun’, ‘Mon’, ‘Tue’, ‘Wed’, ‘Thu’, ‘Fri’, ‘Sat’. Имя месяца сокращается до ‘Jan’, ‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’, ‘Jul’, ‘Aug’, ‘Sep’, ‘Oct’, ‘Nov’, ‘Dec’.
Возвращаемое значение указывает на статическую область памяти, которая переписывается привызовах функций ctime и asctime. Функция заполняет переменную tzname информацией о местном часовом поясе.Функция asctime преобразовывает развёрнутое структурное представление timeptrв строку того же самого формата, что функция ctime. Возвращаемое значение указывает на статическую область памяти, которая переписывается при вызовах функций ctime иasctime. Функция заполняет переменную tzname информацией о местном часовом поясе.Функция strftime позволяет получать строковое представление времени согласно заданной форматной строке.
Прототип следующий:size_t strftime(char *s, size_t max, const char *format,const struct tm *tm);Функция форматирует время в развёрнутом структурном представлении tm в соответствиисо спецификацией формата format и помещает результат в символьный массив s размераmax.Обычные символы копируются из форматной строки в строку s без преобразования.Спецификаторы формата начинаются со знака ’%’ и приведены в таблице.Функция возвращает количество символов, записанных в массив s, не считая последнего символа ’\0’ (то есть, длину строки s), при условии, что длина получившейся строки sменьше max. В противном случае функция возвращает 0, а содержимое массива s не определено.Пример программы#include <time.h>#include <stdio.h>#define SIZE 256intmain (void){charbuffer[SIZE];time_tcurtime;struct tm *loctime;/* Get the current time.
*/curtime = time(NULL);/* Convert it to local time representation. */loctime = localtime(&curtime);3сокращённое имя дня недели (например, Tue)полное имя дня недели (например, Tuesday)сокращённое имя месяца (например, Nov)полное имя месяца (например, November)дата и время (например, Nov 7 11:32:11 2000)день месяца (например, 07)час в 24-часовой шкале (от 00 до 23)час в 12-часовой шкале (от 01 до 12)день года (от 001)месяц года (от 01)минуты в часе (00–59)индикатор AM/PMсекунды в минуте (00–59)неделя (считая от воскресенья) в году (от 00)день недели (0 — воскресенье)неделя (считая от понедельника) в году (от 00)дата (например, Nov 7 2000)время (например, 11:32:11)год в веке (00-99)год (например, 2000)имя часового пояса (если определено) (например, MSK)символ %%a%A%b%B%c%d%H%I%j%m%M%p%S%U%w%W%x%X%y%Y%Z%%Таблица 1: Спецификаторы формата функции strftime/* Print out the date and time in the standard format.
*/fputs(asctime(loctime), stdout);/* Print it out in a nice format. */strftime(buffer, SIZE, "Today is %A, %B %d.\n", loctime);fputs(buffer, stdout);strftime(buffer, SIZE, "The time is %I:%M %p.\n", loctime);fputs(buffer, stdout);return 0;}1.2 Дополнительные функции POSIXФункции, описанные в предыдущем разделе, позволяют получать время с точностью досекунды. Часто требуется получить время с более высокой точностью. Для этого стандартPOSIX определяет дополнительные функции.Функция gettimeofday описана следующим образом.#include <sys/time.h>#include <unistd.h>int gettimeofday(struct timeval *tv, struct timezone *tz);Тип struct timeval определён следующим образом.4#include <sys/time.h>struct timeval{long tv_sec;long tv_usec;};/* секунды *//* микросекунды */Второй аргумент этой функции не должен использоваться, он должен иметь значениеNULL.
Функция заполняет поле tv_sec структуры tv текущим календарным временем, аполе tv_usec микросекундами в секунде. Функция возвращает 0 при успешном завершении и -1 при ошибке. В этом случае переменная errno содержит код ошибки (единственнаяпричина возможной ошибки — недопустимый адрес tv).1.3 Приостановка выполнения программыФункции, описываемые в данном разделе, позволяют приостановить выполнение программы на заданный промежуток времени. Функции завершают работу в двух ситуациях:либо истечёт промежуток времени, либо процессу поступит сигнал, который процесс не игнорирует.Функция sleep позволяет приостановить выполнение программы на заданное количество секунд.#include <unistd.h>unsigned int sleep(unsigned int seconds);Выполнение программы приостанавливается на указанное количество секунд.
Выполнениепрограммы продолжится, когда либо истечёт указанный интервал времени, либо в программупоступит неигнорируемый сигнал. Функция возвращает количество секунд, оставшееся доистечения интервала времени (0, если интервал времени истёк).Функция sleep может использовать в своей работе сигнал SIGALRM, поэтому не рекомендуется смешивать вызовы alarm() и sleep().Функция usleep позволяет приостановить выполнение программы на заданное количество микросекунд.#include <unistd.h>void usleep(unsigned long usec);Функция usleep может реализовываться через системный вызов nanosleep (см.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.