Учебники

C ++ Дата и время

Стандартная библиотека C ++ не предоставляет правильный тип даты. C ++ наследует структуры и функции для манипулирования датой и временем от C. Чтобы получить доступ к функциям и структурам, связанным с датой и временем, вам необходимо включить заголовочный файл <ctime> в вашу программу C ++.

Существует четыре связанных с временем типа: clock_t, time_t, size_t и tm . Типы — clock_t, size_t и time_t могут представлять системное время и дату в виде целого числа.

Тип структуры tm содержит дату и время в форме структуры C, имеющей следующие элементы:

struct tm {
   int tm_sec;   // seconds of minutes from 0 to 61
   int tm_min;   // minutes of hour from 0 to 59
   int tm_hour;  // hours of day from 0 to 24
   int tm_mday;  // day of month from 1 to 31
   int tm_mon;   // month of year from 0 to 11
   int tm_year;  // year since 1900
   int tm_wday;  // days since sunday
   int tm_yday;  // days since January 1st
   int tm_isdst; // hours of daylight savings time
}

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

Sr.No Функция и цель
1

time_t time (time_t * время);

Возвращает текущее календарное время системы в количестве секунд, прошедших с 1 января 1970 года. Если у системы нет времени, возвращается .1.

2

char * ctime (const time_t * time);

Возвращает указатель на строку формы день месяц год часы: минуты: секунды год \ n \ 0 .

3

struct tm * localtime (const time_t * time);

Это возвращает указатель на структуру tm, представляющую местное время.

4

clock_t clock (void);

Это возвращает значение, которое приблизительно соответствует времени, которое вызывающая программа выполняла. Значение .1 возвращается, если время не доступно.

5

char * asctime (const struct tm * time);

Возвращает указатель на строку, содержащую информацию, хранящуюся в структуре, на которую указывает время, преобразованное в форму: день месяц дата часы: минуты: секунды год \ n \ 0

6

struct tm * gmtime (const time_t * time);

Это возвращает указатель на время в виде структуры tm. Время представляется в формате всемирного координированного времени (UTC), которое по сути является средним временем по Гринвичу (GMT).

7

time_t mktime (struct tm * time);

Это возвращает календарный временной эквивалент времени, найденного в структуре, на которую указывает время.

8

двойной difftime (time_t time2, time_t time1);

Эта функция вычисляет разницу в секундах между временем1 и временем2.

9

size_t strftime ();

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

time_t time (time_t * время);

Возвращает текущее календарное время системы в количестве секунд, прошедших с 1 января 1970 года. Если у системы нет времени, возвращается .1.

char * ctime (const time_t * time);

Возвращает указатель на строку формы день месяц год часы: минуты: секунды год \ n \ 0 .

struct tm * localtime (const time_t * time);

Это возвращает указатель на структуру tm, представляющую местное время.

clock_t clock (void);

Это возвращает значение, которое приблизительно соответствует времени, которое вызывающая программа выполняла. Значение .1 возвращается, если время не доступно.

char * asctime (const struct tm * time);

Возвращает указатель на строку, содержащую информацию, хранящуюся в структуре, на которую указывает время, преобразованное в форму: день месяц дата часы: минуты: секунды год \ n \ 0

struct tm * gmtime (const time_t * time);

Это возвращает указатель на время в виде структуры tm. Время представляется в формате всемирного координированного времени (UTC), которое по сути является средним временем по Гринвичу (GMT).

time_t mktime (struct tm * time);

Это возвращает календарный временной эквивалент времени, найденного в структуре, на которую указывает время.

двойной difftime (time_t time2, time_t time1);

Эта функция вычисляет разницу в секундах между временем1 и временем2.

size_t strftime ();

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

Текущая дата и время

Предположим, вы хотите получить текущую системную дату и время либо в виде местного времени, либо в формате всемирного координированного времени (UTC). Ниже приведен пример для достижения того же —

Live Demo

#include <iostream>
#include <ctime>

using namespace std;

int main() {
   // current date/time based on current system
   time_t now = time(0);
   
   // convert now to string form
   char* dt = ctime(&now);

   cout << "The local date and time is: " << dt << endl;

   // convert now to tm struct for UTC
   tm *gmtm = gmtime(&now);
   dt = asctime(gmtm);
   cout << "The UTC date and time is:"<< dt << endl;
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —

The local date and time is: Sat Jan  8 20:07:41 2011

The UTC date and time is:Sun Jan  9 03:07:41 2011

Формат времени с использованием struct tm

Структура tm очень важна при работе с датой и временем в C или C ++. Эта структура содержит дату и время в форме структуры C, как упомянуто выше. Большинство функций, связанных со временем, использует структуру tm. Ниже приведен пример, который использует различные функции, связанные с датой и временем, и структуру tm.

Используя структуру в этой главе, я предполагаю, что у вас есть базовые знания о структуре C и о том, как получить доступ к элементам структуры с помощью оператора стрелки ->.

Live Demo

#include <iostream>
#include <ctime>

using namespace std;

int main() {
   // current date/time based on current system
   time_t now = time(0);

   cout << "Number of sec since January 1,1970:" << now << endl;

   tm *ltm = localtime(&now);

   // print various components of tm structure.
   cout << "Year" << 1970 + ltm->tm_year<<endl;
   cout << "Month: "<< 1 + ltm->tm_mon<< endl;
   cout << "Day: "<<  ltm->tm_mday << endl;
   cout << "Time: "<< 1 + ltm->tm_hour << ":";
   cout << 1 + ltm->tm_min << ":";
   cout << 1 + ltm->tm_sec << endl;
}

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —