gpt4 book ai didi

c - 如何在C中添加分钟

转载 作者:太空宇宙 更新时间:2023-11-04 03:12:47 25 4
gpt4 key购买 nike

我有一个函数可以使用 struct tm 和 maketime 在 C 语言中将任何分钟添加到日期时间。该函数接受字符串形式的日期时间和整数形式的分钟数,然后将分钟数添加到日期时间,然后返回一个字符串。

char *addMinutes(char *dateTime, int mins)
{
/* Intput & Output: YYYYMMDDHHMM */
char year[5];
char month[3];
char day[3];
char HH[3];
char MM[3];
char newDateTime[13];
struct tm t;

STRMCPY(year, dateTime, 4);
STRMCPY(month, &dateTime[4], 2);
STRMCPY(day, &dateTime[6], 2);
STRMCPY(HH, &dateTime[8], 2);
STRMCPY(MM, &dateTime[10],2);

printf("input %s %s %s %s %s\n",year,month,day,HH,MM);
t.tm_year = atoi(year);
t.tm_mon = atoi(month)-1;
t.tm_mday = atoi(day);
t.tm_hour = atoi(HH);
t.tm_min = atoi(MM)+mins;

printf("input %d %d %d %d %d\n",t.tm_year,t.tm_mon,t.tm_mday,t.tm_hour,t.tm_min);

mktime(&t);
printf("input %d %d %d %d %d\n",t.tm_year,t.tm_mon,t.tm_mday,t.tm_hour,t.tm_min);

sprintf(newDateTime, "%04d%02d%02d%02d%02d", t.tm_year, t.tm_mon,
t.tm_mday,t.tm_hour,t.tm_min);

return newDateTime;
}

如果我调用上面的函数,下面是我的结果strcpy(atb30, addMinutes("201812120431",30));

input 2018 12 12 04 31
input 2018 11 12 4 61
input 2018 11 12 5 41
atb 201811120541

我不明白为什么我的程序不工作。使用 C 编写 addMinutes 函数的正确方法是什么。

最佳答案

不要重新发明轮子并接受您必须解析的字符串。取而代之的是接​​收一个指向 struct tm 的指针。这样,“其他人”可以负责处理字符串输入。

struct tm *addMinutes(const struct tm *time, int nMin)
{
time_t equivalent = mktime(time);
equivalent += (nMin*60);

return localtime(&equivalent);
}

关于c - 如何在C中添加分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54739337/

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