Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Полное руководство по дате и времени в C++

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

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

Структура tm хранит дату и время в виде C-структуры со следующими элементами:

struct tm {
    int tm_sec;   // секунды минуты (0-61)
    int tm_min;   // минуты часа (0-59)
    int tm_hour;  // часы дня (0-24)
    int tm_mday;  // день месяца (1-31)
    int tm_mon;   // месяц года (0-11)
    int tm_year;  // год с 1900
    int tm_wday;  // дни с воскресенья
    int tm_yday;  // дни с 1 января
    int tm_isdst; // часы летнего времени
}

Важные функции для работы с датой и временем (все в стандартной библиотеке C/C++):

№Функция и назначение
1

time_t time(time_t *time);

Возвращает текущее календарное время системы в секундах, прошедших с 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);

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

6

struct tm *gmtime(const time_t *time);

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

7

time_t mktime(struct tm *time);

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

8

double difftime(time_t time2, time_t time1);

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

9

size_t strftime();

Форматирует дату и время в заданном формате.

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

Пример получения текущей системной даты и времени, как местного, так и UTC:

Live Demo
#include <iostream>
#include <ctime>
using namespace std;
int main() {
    // текущая дата/время на основе системного времени
    time_t now = time(0);
    // преобразование в строковую форму
    char* dt = ctime(&now);
    cout << "The local date and time is: " << dt << endl;
    // преобразование в структуру tm для 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++. Большинство временных функций используют её. Пример использования различных функций и структуры tm (предполагается базовое понимание структур и оператора ->):

Live Demo
#include <iostream>
#include <ctime>
using namespace std;
int main() {
    time_t now = time(0);
    cout << "Number of sec since January 1,1970 is:: " << now << endl;
    tm *ltm = localtime(&now);
    // вывод компонентов tm
    cout << "Year:" << 1900 + ltm->tm_year << endl;
    cout << "Month: " << 1 + ltm->tm_mon << endl;
    cout << "Day: " << ltm->tm_mday << endl;
    cout << "Time: " << 5 + ltm->tm_hour << ":";
    cout << 30 + ltm->tm_min << ":";
    cout << ltm->tm_sec << endl;
}

Результат (пример):

Number of sec since January 1,1970 is:: 1588485717
Year:2020
Month: 5
Day: 3
Time: 11:31:57

Язык C

  1. Расчет напряжения и тока в реактивных DC цепях
  2. Освоение переменных, литералов и констант в C++: подробное руководство
  3. Классы и объекты в C++: практическое руководство по объектно-ориентированному программированию
  4. Управление памятью в C++: экспертное использование new и delete
  5. Публичное, защищённое и приватное наследование в C++: подробный разбор
  6. Дружественные функции и классы в C++: мастерство контроля доступа
  7. Получение текущей даты и времени в Python: практическое руководство
  8. Структуры C++ против классов: практическое руководство для разработчиков встроенных систем
  9. Перегрузка в C++: функции и операторы — подробное руководство
  10. Ввод-вывод в файлы в C++: чтение и запись с fstream