我正在为我的 UNIX 类(class)创建一个 C 程序。我正在尝试创建一个函数来查找当前日期,获取个人的出生日期(存储在 **个人字符串中),并使用它们来计算个人的年龄(以年和月为单位)。我不确定如何解决这个问题,因为当前日期存储在 struct tm 中,而个人生日存储在字符串中。 (对c非常陌生,才学习了几天)。以下是我的此功能的代码,如果有人可以给我一些建议,谢谢。
char* calcage(char **individual, char **age)
{
time_t time_raw_format;
struct tm * time_struct;
char *lastname = (char *)malloc(50*sizeof(char));
char *lnamefile = (char *)malloc(50*sizeof(char));
char buf [100];
time ( &time_raw_format );
time_struct = localtime ( &time_raw_format );
strftime (buf,100,"It is: %m/%d/%Y.",time_struct);
puts (buf);
printf("person: %s\n", *individual);
lastname = strrchr(*individual, ',');
lastname++;
//lnamefile = strtok(lastname, searchseperator);
printf("Individual: %s\n", lastname);
}
最佳答案
这里的典型方法是将两个日期转换为规范的时间戳格式。 对于解析字符串,请参阅:http://www.gnu.org/software/libc/manual/html_node/Parsing-Date-and-Time.html
一旦您获得了 UNIX 时间戳格式的两种格式,您就可以减去然后转换回年份。但有一些注意事项:
- 如果您仅假设每年有 365 天(由于闰年),则换算回年份是不准确的。这是一种非常微妙的影响,在极少数情况下(通常称为“在客户处”)会使计算错误。
- UNIX 时间戳开始于 1970 年,人们出生的时间早于 1970 年。存在更好的时间戳格式。
所以最后,提取日期、月份和年份,然后单独比较它们可能是值得的。
关于c - 我正在尝试根据给定的出生日期和 c 中的当前日期计算年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21565116/