tm结构体时间
时间: 2025-05-08 20:15:50 浏览: 20
`tm` 结构体是 C/C++ 编程语言中用于表示日期和时间的一个重要数据结构,它通常定义在 `<time.h>` 或者 `<ctime>` 头文件中。这个结构体包含了描述日历时间和时钟时间的各个字段。
以下是 `tm` 结构体的主要成员及其含义:
1. **秒 (`int tm_sec`)**
- 范围为 0 到 61(包括闰秒的情况)。
2. **分钟 (`int tm_min`)**
- 范围为 0 到 59。
3. **小时 (`int tm_hour`)**
- 使用 24 小时制,范围为 0 到 23。
4. **一年中的第几天 (`int tm_yday`)**
- 范围从 0 到 365(平年)或 0 到 366(闰年),其中 0 表示一月一日。
5. **星期几 (`int tm_wday`)**
- 范围是从 0 到 6,对应于周日至周六。
6. **月份 (`int tm_mon`)**
- 范围是从 0 到 11,分别代表一月至十二月。
7. **年份 (`int tm_year`)**
- 自公元 1900 年起计算的年数减去 1900 的值。例如,对于 2023 年来说,`tm_year = 123`。
8. **夏令时标志 (`int tm_isdst`)**
- 如果存在夏令时则该值大于零;如果不存在夏令时,则等于零;如果是未知情况,则小于零。
通过 `mktime()` 函数可以将本地时间转换成基于纪元的时间戳 (自格林尼治标准时间 1970 年 1 月 1 日午夜以来所经过的秒数),反之亦然,可以用如 `localtime()`, `gmtime()` 等函数把时间戳转回 `tm` 格式。
### 示例代码
```c++
#include <iostream>
#include <ctime>
int main(){
time_t now;
struct tm* ptm;
// 获取当前时间
time(&now);
// 将现在的时间转化为本地时间并存储到ptm指针指向的空间内
ptm = localtime(&now);
std::cout << "现在的当地时间:"
<< (ptm->tm_year + 1900) << "-" // 计算完整年份
<< (ptm->tm_mon + 1) << "-" // 加一是因为月份从0开始计数
<< ptm->tm_mday << "\n"
<< " 时间:"
<< ptm->tm_hour << ":"
<< ptm->tm_min << ":"
<< ptm->tm_sec << std::endl;
}
```
阅读全文
相关推荐


















