有戏

 找回密码
 立即注册
简历下载
搜索
热搜: 活动 交友 discuz
查看: 765|回复: 0

计算两个时间跨越的天数

[复制链接]
万事皆有可能 该用户已被删除
发表于 2015-12-17 11:17:53 | 显示全部楼层 |阅读模式
本帖最后由 万事皆有可能 于 2015-12-17 11:19 编辑




#include <stdio.h>


/*
1970-1-1

2014-12-31

2015-1-1
2015-11-30

2015-12-1
2015-12-17


b1 > b2 表示b1比b2 早,返回1
   <                       -1
   =                       0

int compareDate(Birthdate b)
{

}

//计算两个时间跨越的天数 0-1-1
int compareDate(Birthdate b1,Birthdate b2)
{

}
*/




typedef struct
    {
        int year;
        int month;
        int day;
    }Date;

/*判断闰年*/
int isLeapYear( int year)
{
    if( (year%4 == 0 && year%100 != 0) || (year % 400 == 0))
        return 1;
    else
        return 0;
}

int computeDate(Date date)
{
    //1. 累加整年的天数
    int i;
    int sum = 0;
    int m1[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    int m2[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
    for(i=1970;i<date.year;i++)
    {
        if( isLeapYear(i) == 1 )
            sum += 366;
        else
            sum += 365;
    }

    //2. 累加计算整月的天数1---->date.month-1
    for(i=1;i<date.month;i++)
    {
        if(isLeapYear( date.year  ) == 0)
            sum += m1;
        else
            sum += m2;
    }
    //3.加 date.day
    sum += date.day;
    return sum;
}

int main()
{
    /*
    struct Date
    {
        int year;
        int month;
        int day;
    };
    typedef struct Date Birthdate;
    */
    Date b1={1971,3,17},b2;
    // b2 = {2008,10, 10};//error
    int r = computeDate(b1);
    printf("r = %d",r);

}









回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|有戏 粤ICP备2020111303号

GMT+8, 2025-12-6 13:04 , Processed in 0.075101 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表