РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
544 of 815 menu

Класс tm

Класс tm - это структура из заголовочного файла <ctime>, которая хранит дату и время, разбитые на отдельные компоненты. В отличие от time_t, представляющего время одним числом, tm позволяет удобно читать и изменять отдельные поля: год, месяц, день месяца, часы, минуты, секунды и другие. Структура содержит следующие основные поля: tm_year - количество лет, прошедших с 1900 года; tm_mon - номер месяца от 0 (январь) до 11 (декабрь); tm_mday - день месяца от 1 до 31; tm_hour - часы от 0 до 23; tm_min - минуты от 0 до 59; tm_sec - секунды от 0 до 60; tm_wday - день недели от 0 (воскресенье) до 6 (суббота); tm_yday - день года от 0 до 365; tm_isdst - флаг летнего времени.

Синтаксис

struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; };

Пример

Давайте получим текущее время с помощью функции localtime и выведем его компоненты:

#include <iostream> #include <ctime> using namespace std; int main() { time_t t = time(nullptr); tm* now = localtime(&t); cout << "Year: " << now->tm_year + 1900 << endl; cout << "Month: " << now->tm_mon + 1 << endl; cout << "Day: " << now->tm_mday << endl; cout << "Hour: " << now->tm_hour << endl; cout << "Minute: " << now->tm_min << endl; cout << "Second: " << now->tm_sec << endl; return 0; }

Результат выполнения кода:

"Year: 2024" "Month: 5" "Day: 17" "Hour: 14" "Minute: 30" "Second: 45"

Пример

Давайте создадим структуру tm вручную, заполним её поля и преобразуем в строку с помощью strftime:

#include <iostream> #include <ctime> using namespace std; int main() { tm date = {}; date.tm_year = 2024 - 1900; date.tm_mon = 4; date.tm_mday = 17; date.tm_hour = 14; date.tm_min = 30; date.tm_sec = 45; char buffer[80]; strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &date); cout << buffer << endl; return 0; }

Результат выполнения кода:

"2024-05-17 14:30:45"

Пример

Давайте преобразуем структуру tm обратно в time_t с помощью функции mktime:

#include <iostream> #include <ctime> using namespace std; int main() { tm date = {}; date.tm_year = 2024 - 1900; date.tm_mon = 4; date.tm_mday = 17; date.tm_hour = 14; date.tm_min = 30; date.tm_sec = 45; time_t t = mktime(&date); cout << t << endl; return 0; }

Результат выполнения кода:

1715949045

Смотрите также

  • функция localtime,
    которая преобразует time_t в tm с учётом местного времени
  • функция gmtime,
    которая преобразует time_t в tm по UTC
  • функция strftime,
    которая форматирует tm в строку
  • функция difftime,
    которая вычисляет разницу между двумя time_t
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить