首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用difftime()比较日期?

如何使用difftime()比较日期?
EN

Stack Overflow用户
提问于 2017-11-09 23:15:13
回答 1查看 66关注 0票数 0
代码语言:javascript
复制
#include <stdio.h>
#include <time.h>

int date_txt[5],today_date;

scanf("%d",&today_date);        //i enter (input) the date manually e.g. 20171109
date_txt[0]=20161102;           // year month day form (rrrrmmdd)
date_txt[1]=20150101;
date_txt[2]=20170615;
date_txt[3]=20160628;
date_txt[4]=20150101;

我有几个日期,我需要与today_date进行比较,看看差异是否等于或大于1年。我发现有一个名为difftime()的函数,但由于我是一个新手,我不知道如何准确地做到这一点。感谢您的帮助,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-11-10 00:30:09

你可以这样做:

代码语言:javascript
复制
 #include <stdio.h>
 #include <time.h>

 #define COUNT 5
 #define SECONDS_NON_LEAP_YEAR (365*24*3600)
 #define SECONDS_LEAP_YEAR (366*24*3600)

 typedef struct tm T_TIME;
 T_TIME dToday, dTemp;

 void convertToTime(int iDate, T_TIME* tTime)
 {
    tTime->tm_mday = iDate%100;
    iDate/=100;
    tTime->tm_mon = (iDate%100)-1;
    iDate/=100;
    tTime->tm_year = iDate-1900;
 }

 int isLeapYear(int yyyy)
 {
    if(yyyy%100) // Not a century
    {
        return !(yyyy%4);
    }
    return !(yyyy%400);
 }

 int main(void) {
    int date_txt[]={20161102, 20150101, 20170615, 20160628, 20150101}; 
    int today_date, i, flg, isThisYearLeap, tSeconds;

    scanf("%d",&today_date); //i enter (input) the date manually e.g. 20171109 year month day form (rrrrmmdd)
    convertToTime(today_date, &dToday);
    isThisYearLeap = isLeapYear(dToday.tm_year+1900);

    for(i=0;i<COUNT; i++)
    {
        convertToTime(date_txt[i], &dTemp);
        tSeconds = difftime(mktime(&dToday), mktime(&dTemp));
        flg = (isThisYearLeap || isLeapYear(dTemp.tm_year+1900)) ?
            (tSeconds >= SECONDS_LEAP_YEAR) : (tSeconds >= SECONDS_NON_LEAP_YEAR);

        printf("The difference between Today and date %d is %s 1 year.\n", date_txt[i],
                    (flg ? "Greater than or equals to" : "Less than"));
    }

    return 0;
 }

在execution here中查看它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47205348

复制
相关文章

相似问题

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