Namespaces
Variants

tm

From cppreference.net
定义于头文件 <time.h>
struct tm ;

结构体,用于存储分解为各个组成部分的日历日期和时间。

目录

成员对象

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
一月后的月数 – [ 0 , 11 ]
(公开成员对象)
int tm_year
1900年后的年数
(公开成员对象)
int tm_wday
周日后的天数 – [ 0 , 6 ]
(公开成员对象)
int tm_yday
1月1日后的天数 – [ 0 , 365 ]
(公开成员对象)
int tm_isdst
夏令时标志。若启用夏令时则为正数,未启用则为零,若信息不可用则为负数
(公开成员对象)
注释

标准仅要求上述成员以任意顺序存在。实现通常会在该结构中添加更多数据成员。

  1. 取值范围允许存在正闰秒。同一分钟内不允许存在两个闰秒(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)); // 注意隐式尾随的 '\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)表示的日历时间
(function)