Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C_Kurs_Lekt / C_III_семестр / 14_Time_timer

.pdf
Скачиваний:
10
Добавлен:
13.02.2016
Размер:
51.55 Кб
Скачать

ФУНКЦИИ ДЛя РАБОТЫ СО ВРЕМЕНЕМ И ДАТОЙ

 

 

clock

Определяет процессорное время

 

 

 

 

 

 

 

 

Назначение

Определяет процессорное время.

 

 

 

Синтаксис

#include <time.h>

 

 

 

clock_t clock(void);

 

Замечания

clock может

быть использована для определения интервала времени между

 

 

 

двумя событиями.

 

 

Для определения интервала времени в секундах, значение, возвращаемое

 

 

функцией clock, необходимо разделить на значение макроопределения CLK_TCK.

 

 

 

Возвращаемое

Функция clock возвращает процессорное время, прошедшее с момента начала

 

значение

выполнения программы. Функция clock возвращает значение -1, если

 

 

процессорное время недоступно или не может быть отображено как тип

 

 

clock_t.

 

 

#include <time.h> #include <stdio.h> #include <dos.h> int main(void){

clock_t start, end; start = clock(); delay(2000);

end = clock();

printf(" Время было: %f\n", (end-start) / CLK_TCK); return 0;

}

difftime Вычисляет разницу между двумя моментами времени

 

Назначение

 

Вычисляет разницу между двумя моментами времени.

 

 

 

 

 

 

 

 

 

 

 

Синтаксис

 

#include <time.h>

 

 

 

 

 

 

 

 

double difftime(time_t time2, time_t time1);

 

 

 

 

 

 

 

 

 

Замечания

 

difftime вычисляет время в секундах, пройденное между time1 и time2.

 

Возвращаемое

diftime возвращает

разницу

между

двумя моментами времени (типа

 

значение

 

double).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#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("Разница между двумя замерами - %f секунд\n",

 

 

 

 

difftime(second,first)); getch();

 

 

 

 

 

 

return 0;

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

gettime,settime Получает и устанавливает системное время

 

 

 

 

 

 

 

 

Назначение

 

 

Получает и устанавливает системное время

 

 

 

 

 

 

 

 

 

 

 

 

Синтаксис

 

 

#include<dos.h>

 

 

 

 

 

 

 

 

 

void gettime(struct time *timep);

 

 

 

 

 

 

 

void settime(struct time *timep);

 

 

 

Замечания

gettime

заполняет структуру time,

на которую указывает timep, значением

 

текущего системного времени.

settime устанавливает значение системного времени в соответствии с содержимым структуры time, на которую указывает timep.

Структура time определяется следующим образом:

struct time {

 

 

 

 

unsigned char

ti_min;

/*

минуты

*/

unsigned char

ti_hour;

/*

÷àñû

*/

unsigned

char

ti_hund; /* сотые доли секунды */

unsigned

char

ti_sec;

/*

секунды

*/

1

ФУНКЦИИ ДЛя РАБОТЫ СО ВРЕМЕНЕМ И ДАТОЙ

};

Пример

 

 

 

 

 

 

 

 

#include

<stdio.h>

 

 

 

 

 

 

#include

<dos.h>

 

 

 

 

 

 

int main(void){

 

 

 

 

 

 

 

 

struct time t;

 

 

 

 

 

 

 

gettime(&t);

 

 

 

 

 

 

 

 

printf("Текущая минута:

%d\n", t.ti_min);

 

 

 

 

printf("Текущий час:

%d\n", t.ti_hour);

 

 

 

 

 

printf("Текущая сотая секунды: %d\n", t.ti_hund);

 

 

 

 

printf("Текущая секунда:

%d\n", t.ti_sec);

 

 

 

 

/* увеличить на 1 счетчик минут и вызвать settime */

 

 

 

t.ti_min++;

 

 

 

 

 

 

 

 

settime(&t);

 

 

 

 

 

 

 

 

return 0;

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

asctime

Преобразует дату и время в формат ASCII

 

 

 

 

 

 

 

Назначение

 

 

Преобразует дату и время в формат ASCII.

 

 

Синтаксис

 

 

#include <time.h>

 

 

 

 

 

 

 

 

char *asctime(const struct tm

*tblock);

 

 

 

 

 

 

 

 

 

 

Замечания

 

 

asctime преобразует

время,

хранимое в

виде структуры в

 

 

 

 

*tblock, в 26-символьную строку той же формы, что и строка в

 

 

 

 

функции ctime: Sun Sep 16 01:03:52 1973\n\0

 

 

 

 

 

 

 

 

Возвращаемое значение

asctime возвращает

указатель

íà

символьную строку,

 

 

 

 

содержащую дату и

время. Эта строка является статической

 

 

 

 

переменной и меняет свое значение

ïðè

каждом обращении к

 

 

 

 

функции asctime.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#include <stdio.h>

 

 

 

 

 

 

#include <string.h>

 

 

 

 

 

 

#include <time.h>

 

 

 

 

 

 

int main(void){

 

 

 

 

 

 

 

 

struct tm t;

 

 

 

 

 

 

 

 

char str[80]; /* пример загрузки структуры tm */

 

 

 

 

t.tm_sec

=

1

/*

секунды */

 

 

 

 

 

t.tm_min

=

30

/*

минуты */

 

 

 

 

 

t.tm_hour

=

9

/*

÷àñ */

 

 

 

 

 

t.tm_mday

=

22

/*

день месяца */

 

 

 

 

t.tm_mon

=

11

/*

месяц */

 

 

 

 

 

t.tm_year

=

56

/*

год - не включая век */

 

 

 

t.tm_wday

=

4

/*

день недели */

 

 

 

 

t.tm_yday

=

0

/*

не отображается в asctime */

 

 

 

t.tm_isdst =

0

/*

Декретное время. Не отображается в asctime */

 

/* преобразует структуру в строку, оканчивающуюся null */

 

 

 

strcpy(str, asctime(&t));

 

 

 

 

 

 

printf("%s\n", str);

 

 

 

 

 

 

 

return 0;

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

ctime

Преобразует дату и время в строку

 

 

 

 

 

 

 

Назначение

 

Преобразует дату и время в строку.

 

 

 

 

 

 

 

 

 

 

 

 

Синтаксис

 

#include <time.h>

 

 

 

 

 

 

 

char *ctime(const time_t *time);

 

 

 

 

 

 

 

 

 

 

 

 

 

2

ФУНКЦИИ ДЛя РАБОТЫ СО ВРЕМЕНЕМ И ДАТОЙ

 

Замечания

Функция ctime преобразует время, на которое указывает параметр time (в

 

 

том виде, как оно возвращается функцией time), в 26-символьную строку -

 

 

заканчивающуюся символом новой строки и нулем - следующей формы: Mon Nov

 

 

21

11:31:54

1983\n\0

 

 

Все поля имеют постоянную ширину.

 

 

 

Глобальная переменная timezone типа long содержит разницу в

 

 

секундах между GMT (время по Гринвичу) и местным стандартным временем (в

 

 

PST timezone равно 8x60x60). Глобальная переменная daylight отлична от

 

 

нуля тогда и только тогда, когда применяется стандартное преобразование

 

 

декретного времени США.

 

 

 

 

Возвращаемое

ctime возвращает указатель на строку символов, содержащую дату и время.

 

значение

Эта строка находится в статической памяти и переписывается при каждом

 

 

вызове ctime.

#include <stdio.h> #include <time.h> int main(void){

time_t t;

t = time(NULL);

printf("Сегодняшние дата и время: %s\n", ctime(&t)); return 0;

}

getdate, _dos_getdate, _dos_setdate, setdate Получает и устанавливает системную дату

Назначение

Получает и устанавливает системную дату.

Синтаксис

#include<dos.h>

 

 

 

void getdate(struct date *datep);

 

 

void _dos_getdate(struct dosdate_t *datep);

 

void setdate(struct date *datep);

 

 

unsignes _dos_setdate(struct dosdate_t *datep);

 

 

Замечания

Функция getdate заносит в структуру date (на которую указывает datep)

 

текущую системную дату.

 

 

Функция setdate устанавливает системную дату (месяц, день и год) в

 

значение, заложенное в структуре date с указателем datep.

 

Структура date определяется следующим образом:

 

struct date

 

 

 

int da_year;

/* текущий год

*/

 

char da_day;

/* день месяца

*/

 

char da_mon;

/* месяц (1 = Январь)*/

 

;

 

 

 

Функция _dos_getdate заносит в структуру dosdate_t (c указателем datep)

 

текущую системную дату.

 

 

Структура dosdate_t

определяется

следующим

 

образом:

 

 

 

struct dosdate_t

 

 

 

unsigned char day;

/* 1-31

*/

 

unsigned char month;

/* 1-12

*/

 

unsigned int year;

/* 1980-2099 */

 

unsigned char dayofweek;

 

 

/* 0-6 (0=Воскресенье) */

 

 

;

 

 

 

 

 

 

Возвращаемое

Функции _dos_getdate,

getdate è

setdate íå

значение

возвращают никаких значений.

 

 

Если дата установлена успешно, то функция _dos_setdate возвращает 0. В

 

противном случае она возвращает ненулевое значение и устанавливает

 

глобальную переменную в EINVAL

Недопустимое значение даты

#include <dos.h> #include <process.h> #include <stdio.h> int main(void){

3

ФУНКЦИИ ДЛя РАБОТЫ СО ВРЕМЕНЕМ И ДАТОЙ

struct dosdate_t reset; reset.year = 2001; reset.day = 1 reset.month = 1;

printf("Установка даты в 1/1/2001.\n"); _dos_setdate(&reset); _dos_getdate(&reset);

printf("Новый год: %d\n", reset.year); printf("Новый день: %d\n", reset.day); printf("Новый месяц: %d\n", reset.month); return 0;

}

 

stime

Устанавливает системные дату и время

 

 

 

 

 

Назначение

Устанавливает системные дату и время

 

 

 

 

 

 

Синтаксис

#include<time.h>

 

 

 

int stime(time_t *tp);

 

 

 

 

 

 

Замечания

stime устанавливает системные время и дату.

Tp указывает на значение

 

 

времени, измеренное в секундах от : 00:00:00 GMI, January1,1970.

 

Возвращаемое

возвращает значение 0.

 

 

значение

 

 

 

 

 

 

 

 

Пример

 

 

 

 

#include <stdio.h>

 

 

 

#include <time.h>

 

 

 

int main(void)

 

 

{

 

 

 

 

time_t t;

 

 

 

t = time(NULL);

 

 

 

printf("текущая дата %s", ctime(&t));

 

 

t -= 24L*60L*60L;

 

 

 

stime(&t);

 

 

 

printf("Новая дата %s", ctime(&t));

 

 

return 0;

 

 

}

 

 

 

 

time

Получает время дня

 

 

 

 

 

 

 

 

 

 

Назначение

Получает время дня

 

 

 

 

 

 

 

 

Синтаксис

#include <time.h>

 

 

 

 

time_t time(time_t *timer);

 

 

 

 

 

Замечания

time выдает текущее время в секундах, отсчитываемое с 00:00:00 GMT (по

 

 

Гринвичу) 1 января 1970 года и сохраняет

это значение в ячейке, на

 

 

которую указывает

timer (timer становится

ненулевым указателем).

 

Возвращаемое

time возвращает

время, отсчитанное к моменту вызова функции, как

 

значение

описано.

 

 

 

 

 

 

 

Пример

#include <time.h> #include <stdio.h> #include <dos.h>

int main(void)

{

time_t t;

t = time(NULL);

printf("Число секунд после 1 января 1970 равно %ld",t); return 0; }

4