Namespaces
Variants

tm

From cppreference.net
定義済みヘッダー <time.h>
struct tm ;

カレンダーの日付と時刻を構成要素に分解して保持する構造体。

目次

翻訳の説明: - 「Contents」→「目次」に翻訳 - C++関連の用語(Member objects、Notes、Example、References、See also)は原文のまま保持 - HTMLタグ、属性、クラス名、IDは一切変更せず - 数値や構造は完全に保持 - プロフェッショナルな技術文書としての正確性を維持

メンバーオブジェクト

int tm_sec
分後の秒数 – [ 0 , 61 ] (C99まで) [ 0 , 60 ] (C99以降) [注釈 1]
(公開メンバオブジェクト)
int tm_min
時後の分 – [ 0 , 59 ]
(公開メンバオブジェクト)
int tm_hour
深夜からの時間 – [ 0 , 23 ]
(公開メンバオブジェクト)
int tm_mday
月の日 – [ 1 , 31 ]
(公開メンバオブジェクト)
int tm_mon
1月からの月数 – [ 0 , 11 ]
(公開メンバオブジェクト)
int tm_year
1900年からの年数
(公開メンバオブジェクト)
int tm_wday
日曜日からの日数 – [ 0 , 6 ]
(公開メンバオブジェクト)
int tm_yday
1月1日からの日数 – [ 0 , 365 ]
(公開メンバオブジェクト)
int tm_isdst
夏時間フラグ。DSTが有効な場合は正の値、無効な場合は0、情報が利用できない場合は負の値
(公開メンバオブジェクト)
注記

標準は前述のメンバーのみが任意の順序で存在することを規定しています。実装では通常、この構造体にさらにデータメンバーを追加します。

  1. 範囲は正の閏秒を許容する。同じ分内での2つの閏秒は許可されない(C89の範囲0..61は欠陥であった)

#include <stdio.h>
#include <time.h>
int main(void)
{
    struct tm start = {.tm_year = 2022 - 1900, .tm_mday = 1};
    mktime(&start);
    printf("%s", asctime(&start)); // note implicit trailing '\n'
}

出力:

Sat Jan  1 00:00:00 2022

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.27.1/3 時間の構成要素 (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.27.1/3 時間の構成要素 (p: 284)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.27.1/3 時間の構成要素 (p: 388)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.23.1/3 時間の構成要素 (p: 338)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 4.12.1 時間の構成要素

関連項目

エポックからの経過時間を現地時間で表した暦時刻に変換する
(関数)
エポックからの経過時間を協定世界時(UTC)で表した暦時刻に変換する
(関数)