首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何比较C中没有秒的两个日期

如何比较C中没有秒的两个日期
EN

Stack Overflow用户
提问于 2021-04-09 10:22:32
回答 1查看 56关注 0票数 0

我想比较两个日期,一个在当前日期时间,一个在一个列表中记忆。如果这些日期具有相同的年份、月份和日期,则在列表中添加一个旧日期的值:如果没有,则在列表中创建一个新元素。

代码语言:javascript
运行
复制
struct entry{
time_t date;
int quantity;
struct entry* next;
};

我调用find_list,查找和比较当前日期和记忆的日期

代码语言:javascript
运行
复制
    int find_list(struct entry* head, time_t data, int quantita){

    struct tm* data_value, *data_list;  
    struct entry* pointer = head;
    time(&data);    
    data_value = gmtime(&data); 

    while(pointer){     
        data_list = gmtime(&pointer->date);
        //printf("Tempo value:%s\nTempo lista: %s\n", asctime(data_value), asctime(data_list));
        if(data_value->tm_year == data_list->tm_year && .....){
            pointer->quantity += quantita;
            return 1; 
        }
        pointer = pointer->next;        
    }
    return 0;   
};

但是如果我打印这两个值,我就打印相等的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-09 10:27:24

gmtime()返回一个指针。对gmtime()的连续调用(全部返回指针)可能返回指向同一内存的指针。

复制指向实际对象的内存。

代码语言:javascript
运行
复制
struct tm data_list;                 // not a pointer!
data_list = *gmtime(&pointer->data); // copy value

注意: POSIX引入了,它的行为与预期的一样。

代码语言:javascript
运行
复制
// for POSIX systems
struct tm data_list;                  // still not a pointer
gmtime_r(&pointer->data, &data_list);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67019336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档