Студопедия

КАТЕГОРИИ:


Архитектура-(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;

}

<== предыдущая лекция | следующая лекция ==>
Сравнение строк | Формат 2
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 514; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.