Выбрать главу

 int tm_yday; /* день, начиная с 1-го января, 0-365 */

 int tm_isdst /* индикатор летнего времени */

}

Значение tm_isdst положительно, если действует режим летнего времени (Daylight Saving Time), равно нулю, если не действует, и отрицательно, если информация об этом недоступна.

Основным средством определения времени и даты в C++ является функция time(), которая имеет такой прототип:

time_t time(time_t *curtime);

Функция time() возвращает текущее календарное время системы. Если в системе отсчет времени не производится, возвращается значение -1. Функцию time() можно вызывать либо с нулевым указателем, либо с указателем на переменную curtime типа time_t. В последнем случае этой переменной будет присвоено значение текущего календарного времени.

Чтобы преобразовать календарное время в поэлементное, используйте функцию localtime(), которая имеет такой прототип:

struct tm *localtime(const time_t *curtime);

Функция localtime() возвращает указатель на поэлементную форму параметра curtime, представленного в виде структуры tm. Значение curtime представляет локальное время. Его обычно получают с помощью функции time().

Структура, используемая функцией localtime() для хранения времени в поэлементной форме, размещается в памяти статически и перезаписывается при каждом вызове этой функции. Если нужно сохранить содержимое этой структуры, скопируйте его в какую-нибудь другую область памяти.

Следующая программа демонстрирует использование функций time() и localtime(), отображая на экране текущее системное время.

// Эта программа отображает текущее системное время.

#include <iostream>

#include <ctime>

using namespace std;

int main()

{

 struct tm *ptr;

 time_t lt;

 lt = time('\0');

 ptr = localtime(&lt);

 cout << ptr->tm_hour << ':' << ptr->tm_min;

 cout << ':' << ptr->tm_sec;

 return 0;

}

Вот один из возможных результатов выполнения этой программы:

14:52:30

Несмотря на то что ваши программы могут использовать поэлементную форму представления времени и даты (как показано в предыдущем примере), проще всего сгенерировать строку времени и даты с помощью функции asctime(), прототип который выглядит так:

char *asctime(const struct tm *ptr);

Функция asctime() возвращает указатель на строку, которая содержит результат преобразования информации, хранимой в адресуемой параметром ptr структуре, и имеет следующую форму.

день месяц число часы:минуты:секунды год\n\0

Указатель на структуру, передаваемый функции asctime(), часто получают с помощью функции localtime().

Область памяти, используемая функцией asctime() для хранения форматированной строки результата, представляет собой символьный массив (статически выделяемый в памяти), который перезаписывается при каждом вызове этой функции. Если нужно сохранить содержимое данной строки, скопируйте его в какую-нибудь другую область памяти.

В следующей программе демонстрируется использование функции asctime() для отображения системного времени и даты.

// Эта программа отображает текущее системное время.

#include <iostream>

#include <ctime>

using namespace std;

int main()

{

 struct tm *ptr;

 time_t lt;

 lt = time('\0');

 ptr = localtime(&lt);

 cout << asctime(ptr);

 return 0;

}

Вот один из возможных результатов выполнения этой программы.

Wed Jul 28 15:05:51 2004

В языке C++ предусмотрены и другие функции даты и времени, с которыми можно познакомиться, обратившись к документации, прилагаемой к вашему компилятору.

Ссылки на структуры