gpt4 book ai didi

c - 为什么 C struct tm (time.h) 返回错误的月份?

转载 作者:行者123 更新时间:2023-12-02 07:57:53 25 4
gpt4 key购买 nike

现在是 2020 年 4 月 10 日。我用 C 语言制作了这个整数月份到字符串月份的转换器函数。它接受一个整数并返回一个字符串。出于某种原因,它认为现在是三月。我调查了问题是我的转换器还是其他东西我打印了 myTime->tm_mon 并在它应该返回 3< 时返回了 2 (三月)/(四月)。谁能找到(我假设是)我的错误并指出给我?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef struct tm tm;

void *numberToLetters(int month) {
char *smonth;
switch (month) {
case (0):
smonth = "January";
break;
case (1):
smonth = "February";
break;
case (2):
smonth = "March";
break;
case (3):
smonth = "April";
break;
case (4):
smonth = "May";
break;
case (5):
smonth = "June";
break;
case (6):
smonth = "July";
break;
case (7):
smonth = "August";
break;
case (8):
smonth = "September";
break;
case (9):
smonth = "October";
break;
case (10):
smonth = "November";
break;
case (11):
smonth = "December";
break;
default:
return NULL;
}
return smonth;
}

int main() {
time_t present;
time(&present);
tm *myTime = &present;
void *month = (char *)numberToLetters(myTime->tm_mon);
printf("%s\n", month);
return 0;
}

最佳答案

time()返回 time_t , 将其转换为 tm结构,你可以使用localtime()

更改为

tm *myTime = localtime(&present);

它打印四月

关于c - 为什么 C struct tm (time.h) 返回错误的月份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61141211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com