struct tm 出现-1900
时间: 2023-08-06 16:07:50 浏览: 194
在C语言中,tm结构体中的tm_year成员表示的是距离1900年的年数。因此,如果要表示当前年份,需要将当前年份减去1900。例如,如果当前年份是2021年,则tm_year应该设置为121。
因此,在使用tm结构体时,我们经常会看到在对年份进行赋值时,会出现-1900的情况。例如,如果要将年份设置为2021年,可以使用以下代码:
```c
#include <time.h>
struct tm timeinfo = {0}; // 初始化为0
timeinfo.tm_year = 121; // 年份为2021
timeinfo.tm_mon = 5; // 月份为6月
timeinfo.tm_mday = 1; // 日期为1日
timeinfo.tm_hour = 12; // 小时为12点
timeinfo.tm_min = 0; // 分钟为0分
timeinfo.tm_sec = 0; // 秒数为0秒
```
在上述代码中,我们将年份设置为121,而不是2021。这是因为tm结构体中的tm_year成员表示的是距离1900年的年数。因此,121表示的是2021年。
需要注意的是,在使用tm结构体时,我们通常会将年份减去1900来表示距离1900年的年数。在显示或输出年份时,需要将年份加上1900。例如,如果要输出timeinfo中表示的日期和时间信息,可以使用以下代码:
```c
printf("Date and time: %d-%d-%d %d:%d:%d\n",
timeinfo.tm_year + 1900, timeinfo.tm_mon + 1, timeinfo.tm_mday,
timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
```
在上述代码中,我们将timeinfo中的年份加上1900,以得到实际的年份。
阅读全文