如何在C中检查日期时间

如何在C中检查日期时间,c,C,我有以下代码: int main(void) { struct tm str_time; time_t time_of_day; str_time.tm_year = 2012-1900; str_time.tm_mon = 6; str_time.tm_mday = 5; str_time.tm_hour = 10; str_time.tm_min = 3; str

我有以下代码:

int main(void) {
        struct tm str_time;
        time_t time_of_day;

        str_time.tm_year = 2012-1900;
        str_time.tm_mon = 6;
        str_time.tm_mday = 5;
        str_time.tm_hour = 10;
        str_time.tm_min = 3;
        str_time.tm_sec = 5;
        str_time.tm_isdst = 0;

        time_of_day = mktime(&str_time);
        printf(ctime(&time_of_day));

        return 0;
}
它工作得很好,但我找不到一种方法来验证代码中的日期和时间是否与计算机相同,有人知道如何比较这两个日期吗

。。。你知道如何比较这两个日期吗

OP正在做3件事,这会导致潜在的时间差

  • 在调用mktime(&stru\time)之前,代码可能没有填写所有需要的字段。C至少指定9个字段。最好为零填充
    str_time
    ,然后设置7个字段。这是一个相对罕见的问题

  • 关于日期“2016-06-25 06:58:31”的OP评论。但不发布用于填充
    struct tm
    的值。一个常见的错误代码是
    tm_mon
    是自一月起的月份,因此需要负1

    str_time.tm_year = 2016-1900;
    str_time.tm_mon = 6 - 1;
    str_time.tm_mday = 25;
    str_time.tm_hour = 6;
    str_time.tm_min = 58;
    str_time.tm_sec = 31;
    str_time.tm_isdst = tbd; // see below
    
  • str_time.tm_isdst=0将时间戳设置为无夏令时。通常最好使用
    str_time.tm_isdst=-1
    并让系统确定DST是否有效

  • 与计算给定用户年-月-日的
    时间\u t
    不同,建议使用计算机的时间并将其转换为年-月-日,然后进行比较。当然,任何差异/差异都会更容易理解

    将计算机本地年、月、日与用户输入进行比较

    // February 20, 2016
    int y = 2016;
    int m = 2;
    int d = 20;
    
    time_t now;
    if (time(&now) == -1) Handle_Error();
    struct tm *tm = localtime(&now);
    if (tm == NULL) Handle_Error();
    
    if (((tm->tm_year + 1900) == y) && ((tm->tm_mon + 1) == m) && (tm->tm_mday == d)) {
      puts("Dates match");
    }
    

    time()
    函数返回系统当前时间的视图:
    time\u t now=time(0)localtime()
    对其进行分析,以获得分解时间。对于解析日期字符串,请考虑<代码> STRPIMTIME()>代码>。我想我解释错了。我想把我的日期与我的计算机的当前日期进行比较。e、 g.
    如果(mydatetime==datetimenow)printf(你的datetime等于计算机)
    那么,如果你的计算机仍然认为它是2012年7月(请注意,月份“减少一个”),你就有问题了。恐怕你的“澄清”评论难以理解;阅读后我一点也不明白。使用2012只是一个例子,我想做的是检查未来的日期和时间,我需要将我的日期与您计算机上的当前日期进行比较。例如,
    2016-06-25 06:58:31
    ,你到达那个日期和时间的那一天,我想拉一个函数,问题是我想知道如何比较日期
    strtime
    不在ISO C中,你可能需要下载一个免费软件实现。在那个家伙chux发布的代码中找到好的“偏差”总是非常罕见的。。。(我们会处理的)