Функция приостановки времени на заданный интервал
Функция 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;
}