namespace std {
struct tm {
int tm_sec; // 秒
int tm_min; // 分
int tm_hour; // 時
int tm_mday; // 日
int tm_mon; // 月 (1月からの月数)
int tm_year; // 年 (1900年からの年数)
int tm_wday; // 曜日 (日曜からの日数)
int tm_yday; // 年内通算日 (1月1日からの日数)
int tm_isdst; // 夏時間フラグ
};
}
概要
tmは、年月日・時分秒といった要素に分解されたカレンダー時間を保持する構造体である。localtime・gmtime関数によってtime_t値から生成され、mktime・asctime・strftime関数によって使用される。
各メンバ変数は、以下を意味する:
| 変数 | 説明 |
|---|---|
tm_sec |
秒。値の範囲は[0, 60] (60はうるう秒のため) |
tm_min |
分。値の範囲は[0, 59] |
tm_hour |
時。値の範囲は[0, 23] |
tm_mday |
日。値の範囲は[1, 31] |
tm_mon |
1月からの月数。値の範囲は[0, 11] (0が1月) |
tm_year |
1900年からの年数 (西暦年から1900を引いた値) |
tm_wday |
日曜からの曜日。値の範囲は[0, 6] (0が日曜) |
tm_yday |
1月1日からの年内通算日。値の範囲は[0, 365] |
tm_isdst |
夏時間 (Daylight Saving Time) フラグ。夏時間が有効なら正、無効なら0、情報が得られない場合は負 |
備考
- メンバ変数の宣言順序は規定されていない。上記以外の追加メンバを持つ場合もある
tm_monは1月が0、tm_yearは1900年からの経過年数である点に注意する。たとえば2026年1月であれば、tm_monは0、tm_yearは126となる
例
#include <ctime>
#include <iostream>
int main()
{
// 現在日時を、要素別のカレンダー時間に変換する
std::time_t t = std::time(nullptr);
std::tm* lt = std::localtime(&t);
std::cout << (lt->tm_year + 1900) << "年"
<< (lt->tm_mon + 1) << "月"
<< lt->tm_mday << "日" << std::endl;
}
出力例
2026年8月19日
バージョン
言語
- C++03