КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Функции по работе с датой и временем
Функция приостановки времени на заданный интервал Функция delay предназначена для приостановки времени на заданный интервал времени (в миллисекундах) #include <dos.h> void delay(unsigned); Функция получения системного времени Функция time предназначена для получения системного времени (в сек с 00.00.00 01 янв 1970 г) #include <time.h> time_t time(time_t*); (time_t – тип данных, определённый в файле time.h оператором typedef long time_t) аргумент – указатель, которому будет присвоено значение. При нулевом указателе NULL значение не присваивается.
Функция определения разницы во времени между двумя событиями. Функция difftime Вычисляет разницу во времени между двумя событиями.
Синтаксис #include<time.h> double difftime(time_t time2, time_t time1); Прототип в time.h Примечания Вычисляет время в секундах, прошедшее от time1 до time2. Значение Типа double. Переносимость Эта функция доступна в системах UNIX и опреде- лена в ANSI C. См. также asctime, ctime, daylight(глобальная переменная), gmtime, localtime, time, timezone(глобальная переменная) Пример #include <time.h> #include <stdio.h> #include <dos.h> #include <conio.h> int main(void) { time_t first, second; clrscr(); first = time(NULL); /* системное время */ delay(2000); /* ожидает 2 секунды */ second = time(NULL); printf("The difference is: %f seconds\n", difftime(second,first)); getch(); }
Функция помещения текущего времени в структуру timeb. Функция ftime помещает текущее время в структуру timeb.
Синтаксис #include <sys\timeb.h> void ftime(struct timeb *buf); Прототип в sys\timeb.h Примечания Определяет текущее время и заполняет поля труктуры timeb, указываемой посредством buf. timeb содержит 4 поля: time, millitm, timezone и dstflag: struct timeb { long time; short millitm; short timezone; short dstflag; }; - time - время в секундах с 00:00:00 1 января 1970 года по Гринвичу (GMT). - millitm - миллисекунды. - timezone - разница в минутах между GMT и местным временем; возрастает в западном направлении. ftime получает это поле из глобальной переменной timezone, которая устанавливается tzset. - dstflag используется для указания необходимости учета летнего времени. Внимание!!! Функция ftime вызывает tzset. Поэтому нет необходимости вызывать tzset явно, когда Вы используете ftime. Значение Нет. Переносимость Эта функция доступна в системах UNIX System 5. См. также asctime, ctime, gmtime, localtime, stime, time, Tzset DOS имеет специальную область памяти, называемую окружением (environment), в которой хранится набор строк символов, которые могут использоваться программами (например, о режиме работы программы, где искать временные файлы и т.д.) Пример #include <stdio.h> #include <stdlib.h> #include <time.h> #include <sys\timeb.h> /* стандартное тихоокеанское время с учетом летнего времени */ char *tzstr = "TZ=PST8PDT"; main(void) { struct timeb t; putenv(tzstr); tzset(); ftime(&t); printf("Seconds since 1/1/1970 GMT: %ld\n", t.time); printf("Thousandths of a second: %d\n", t.millltm); printf("Difference between local time and GMT: %d\n", t.timezone); printf("Daylight savings in effect (1) not (0): %d\n", t.dstflag); } Функция определения времени процессора. Функция clock определяет время процессора.
Синтаксис #include<time.h> clock_t clock(void); Прототип в time.h Примечания Может быть использована для определения временного интервала между двумя событиями. Для определения времени в секундах, значение, возвращаемое clock, следует разделить на значение макро CLK_TCK. Значение Возвращает время процессора, прошедшее с начала работы программы. Если это значение недоступно или не может быть представлено, будет возвращено значение -1. Переносимость Эта функция совместима с ANSI C. См. также time Пример #include <time.h> #include <stdio.h> #include <dos.h> main(void) { clock_t start, end; start = clock(); delay(2000); end = clock(); printf("The time was: %f\n", (end - start) / CLK_TCK); }
Функция преобразования даты и времени в символьную строку.
Функция ctime Преобразует дату и время в строку. Синтаксис #include<time.h> char *ctime(const time_t *time); Прототип в time.h Примечания Преобразует значение, указываемое time (в виде, возвращаемом функцией time), в 26-символьную строку в следующем форме, завершенной символом новой строки и нуль-символом: Mon Nov 21 11:31:54 1983\n\0 Все поля имеют постоянную ширину. Установите глобальную переменную timezone в значение разности в секундах между GMT (гринвичское время) и местным временем (для PST - тихоокеанского поясного времени - timezone = 8 * 60 * 60). Глобальная переменная daylight ненулевая, если и только если должен применяться стандарт США для преобразования в летнее время. Значение Указатель на символьную строку, содержащую дату и время. Возвращаемое значение указывает на статическую строку, которая перезаписывается при каждым новом вызове ctime. Переносимость Эта функция доступна в системах UNIX и определена в ANSI C. См. также asctime, daylight(глобальная переменная), diftime, ftime, getdate, gmtime, localtime, settime, timezone(глобальная переменная), tzset Пример #include <stdio.h> #include <time.h> main(void) { time_t t; t = time(NULL); printf("Today's date and time: %s\n", ctime(&t)); }
Функция получения системной даты и времени.
Функция getdate получает системную дату. Синтаксис #include <dos.h> void getdate(struct date *datep); Прототип в dos.h Примечания Помещает в структуру типа date текущую системную дату; datep - указатель на эту структуру. Структура date определена следующим образом: struct date { int da_year; /* год */ char da_day; /* день месяца */ char da_mon; /* месяц (1 = январь) */ }; Значение Нет. Переносимость Эта функция доступна только в DOS. См. также ctime, gettime, setdate, settime Пример #include <dos.h> #include <stdio.h> main(void) { struct date d; getdate(&d); printf("The current year is: %d\n", d.da_year); printf("The current day is: %d\n", d.da_day); printf("The current month is: %d\n", d.da_mon); }
Функция преобразования значения даты и времени в структуру tm
Функция localtime Преобразует значения даты и времени в структуру Синтаксис #include <tume.h> struct tm *localtime(const time_t *timer); Прототип в time.h Замечание localtime принимает адрес значения, возвращаемого функцией time, и возвращает указатель на структуру типа tm, содержащую разнесенное по отдельным полям значение времени и даты. Она корректирует эти значения с учетом часового пояса и, возможно, режима летнего времени. Глобальная переменная timezone (типа long) должна быть установлена в значение разности в секундах между временем по Гринвичу (GMT) и местным временем (для Тихоокеанского Стандартного Времени - PST - значение timezone равно 8x60x60). Глобальной переменной daylight должно быть присвоено ненулевое значение ТОЛЬКО в случае, если применяется стандарт США режима летнего времени. Структура tm описана в time.h следующим образом: struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; Эти величины определяют время в 24-часовом исчислении, день месяца (от 1 до 31), месяц (от 0 до 11), день недели (воскресенью соответствует 0), (год - 1900), день года (от 0 до 365) и флаг, который отличен от нуля, если действует режим летнего времени. Значение localtime возвращает указатель на структуру, содержащую разнесенное по отдельным полям значение времени и даты. Эта структура является статическим объектом, т.е. перезаписывается при каждом вызове. Переносимость Эта функция доступна в системах UNIX и совместима с ANSI C. См.также asctime, ctime, ftime, gmtime, stime, time, tzset Пример #include <time.h> #include <stdio.h> #include <dos.h> main(void) { time_t timer; struct tm *tblock; /* получает время суток */ timer = time(NULL); /* переводит дату и время в структуру */ tblock = localtime(&timer); printf("Local time is: %s",asctime(tblock)); } Получение дескриптора файла (целое число, порядковый номер потока в числе открытых программой потоков) int fileno(FILE*);
Функция получения дату и время модификации файла.
Функция getftime получает дату и время модификации файла. Синтаксис #include <io.h> int getftime(int handle, struct ftime *ftimep); Прототип в io.h Примечания getftime извлекает время и дату модификации файла на диске, открытого с обработчиком handle. ftimep - указатель на структуру ftime, в которую помещается полученная информация. Структура ftime определена следующим образом: struct ftime { unsigned ft_tsec: 5; /* пары секунд */ unsigned ft_min: 6; /* минуты */ unsigned ft_hour: 5; /* часы */ unsigned ft_day: 5; /* дни */ unsigned ft_month: 4; /* месяцы */ unsigned ft_year: 7; /* год - 1980 */ }; Значение При успешном завершении возвращается 0. В случае ошибки возвращается -1, и глобальная переменная errno устанавливается в одно из следующих значений: EINVFNC Неверный номер функции EBADF Неверный номер (обработчика) файла Переносимость Эта функция доступна только в DOS. См. также open, setftime Пример #include <stdio.h> #include <io.h> main(void) { FILE *stream; struct ftime ft; if ((stream = fopen("TEST.$$$", "wt")) == NULL) { fprintf(stderr, "Cannot open output file.\n"); return 1; } getftime(fileno(stream), &ft); printf("File time: %02u:%02u:%02u\n", ft.ft_hour, ft.ft_min, ft.ft_tsec / 2); printf("File date: %02u/%02u/%04u\n", ft.ft_month, ft.ft_day,ft.ft_year + 1980); fclose(stream); return 0; }
Функция получения системное время.
Функция gettime получает системное время. Синтаксис #include <dos.h> void gettime(struct time *timep); Прототип в dos.h Примечания gettime помещает текущее системное время в структуру типа time; timep - указатель на эту структуру. Структура time определена следующим образом: struct time { unsigned char ti_min; /*минуты*/ unsigned char ti_hour; /*часы*/ unsigned char ti_hund; /*сотые доли секунды*/ unsigned char ti_sec; /*секунды*/ }; Значение Нет. Переносимость Эта функция доступна только в DOS. См. также getdate, setdate, settime, stime, time Пример #include <stdio.h> #include <dos.h> main(void) { struct time t; gettime(&t); printf("The current time is: %2d:%02d:%02d.%02d\n", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund); }
Функция перевода даты и времени в значение по Гринвичу.
Функция gmtime переводит дату и время в значение по Гринвичу (GMT). Синтаксис #include <time.h> struct tm *gmtime(const time_t *timer); Прототип в time.h Примечания gmtime принимает адрес значения, полученного с помощью функции time, и возвращает указатель на структуру tm, содержащую разнесенное по отдельным полям значение времени, переведенное непосредственно в GMT. Глобальная переменная timezone должна содержать разность в секундах между временем по Гринвичу (GMT) и местным поясным временем (для Тихоокеанского Стандартного времени, PST, timezone = 8 * 60 * 60). Глобальная переменная daylight должна иметь ненулевое значение ТОЛЬКО В ТОМ СЛУЧАЕ, если должен применяться американский стандарт летнего времени. Структура tm определена в time.h следующим образом: struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; Эти величины дают: время в 24-часовом исчислении, день месяца от 1 до 31, месяц от 0 до 11, день недели (воскресенью соответствует 0), (год - 1900), день года от 0 до 365 и флаг, который не равен 0, если действует летнее время. Значение gmtime возвращает указатель на структуру tm, содержащую разнесенное по отдельным полям значение времени. Эта структура - статический объект, поэтому она перезаписывается при каждом вызове. Переносимость Эта функция доступна в системах UNIX и определена в ANSI C. См. также asctime, ctime, ftime, localtime, stime, time, tzset Пример #include <stdio.h> #include <stdlib.h> #include <time.h> #include <dos.h> /* Тихоокеанское Стандартное время с режимом летнего времени */ char *tzstr = "TZ=PST8PDT"; int main(void) { time_t t; struct tm *gmt, *area; putenv(tzstr); tzset(); t = time(NULL); area = localtime(&t); printf("Local time is: %s", asctime(area)); gmt = gmtime(&t); printf("GMT is: %s", asctime(gmt)); }
Функция установки даты и времени создания / модификации файла. Функция setftime Устанавливает дату и время создания / модификации файла. Синтаксис #include <io.h> int setftime(int handle, struct ftime *ftimep); Прототип в io.h Примечания setftime устанавливает дату и время создания / модификации файла, связанного с handle, в значения, содержащиеся в структуре ftime, на которую указывает ftimep. Структура ftime определена следующим образом: struct ftime { unsigned ft_tsec: 5; /* пары секунд */ unsigned ft_min: 6; /* минуты */ unsigned ft_hour: 5; /* часы */ unsigned ft_day: 5; /* дни */ unsigned ft_month: 4; /* месяцы */ unsigned ft_year: 7; /* год - 1980 */ }; Значение setftime возвращает 0 в случае успешного завершения. В случае ошибки возвращается -1 и глобальная переменная errno устанавливается в одно из следующих значений: EINVFNC Неверный номер функции EBADF Неверный номер файла Переносимость Эта функция доступна только в DOS. См. также gettime Пример #include <stdio.h> #include <process.h> #include <fcntl.h> #include <io.h> int main(void) { struct ftime filet; FILE *fp; if ((fp = fopen("TEST.$$$", "w")) == NULL) { perror("Error:"); exit(1); } fprintf(fp, "testing...\n"); /* загрузить в структуру ftime новое время и дату */ filet.ft_tsec = 1; filet.ft_min = 1; filet.ft_hour = 1; filet.ft_day = 1; filet.ft_month = 1; filet.ft_year = 21; /* показать время и дату в текущем справочнике */ system("dir TEST.$$$"); /* изменить время и дату */ setftime(fileno(fp), &filet); system("dir TEST.$$$"); /* закрыть и удалить временный файл */ fclose(fp); unlink("TEST.$$$"); return 0; }
Дата добавления: 2014-01-07; Просмотров: 552; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |