Поле tm_mon
Поле tm_mon класса tm хранит номер месяца в году.
Это поле имеет тип int и принимает значения от 0 до 11,
где 0 соответствует январю, а 11 - декабрю.
Обратите внимание, что нумерация месяцев начинается с нуля,
а не с единицы, как мы привыкли в повседневной жизни.
Поле tm_mon обычно используется вместе с функциями
localtime и gmtime, которые заполняют структуру tm
на основе системного времени.
Синтаксис
tm_obj.tm_mon
Пример
Давайте получим текущее системное время и выведем номер месяца:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
time_t rawtime;
time(&rawtime);
tm* timeinfo = localtime(&rawtime);
cout << "Month number: " << timeinfo->tm_mon << endl;
cout << "Month (1-based): " << timeinfo->tm_mon + 1 << endl;
return 0;
}
Результат выполнения кода (для сентября):
"Month number: 8"
"Month (1-based): 9"
Пример
Давайте создадим структуру tm вручную и установим месяц в значение 0 (январь):
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
tm timeinfo = {};
timeinfo.tm_year = 2026 - 1900;
timeinfo.tm_mon = 0;
timeinfo.tm_mday = 15;
cout << "Year: " << timeinfo.tm_year + 1900 << endl;
cout << "Month number: " << timeinfo.tm_mon << endl;
cout << "Day: " << timeinfo.tm_mday << endl;
return 0;
}
Результат выполнения кода:
"Year: 2026"
"Month number: 0"
"Day: 15"
Пример
Давайте выведем название месяца, используя массив строк и поле tm_mon:
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
const char* months[] = {
"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"
};
time_t rawtime;
time(&rawtime);
tm* timeinfo = localtime(&rawtime);
cout << "Current month: " << months[timeinfo->tm_mon] << endl;
return 0;
}
Результат выполнения кода (для сентября):
"Current month: September"