Стандартная библиотека 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). Ниже приведен пример для достижения того же —
#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 и о том, как получить доступ к элементам структуры с помощью оператора стрелки ->.
#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; }
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —