c - 我正在尝试根据给定的出生日期和 c 中的当前日期计算年龄

标签 c date

我正在为我的 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/

相关文章:

c - 直接内存映射GCC交叉编译

C:指向整数地址的长指针

c - 一个程序,给定一个字符串、一个宽度和一个用于输出的空字符串,该程序将字符串置于输出区域的中心。

Javascript 月份差异

c++ - omp_set_max_active_levels() 和函数调用

c++ - Visual Studio 中的 GCC 样式弱链接?

php - 每周两次约会 php

java - 获取当前一周日期的正确方法

date - 计划任务日志到以当前日期命名的文件

ruby - 遍历日期以查找日期之间的天数