计算两个日期间天数

1.如果两个日期是同一年,则两日期间天数等于两个日期在这一年的第几天相减;

2.如果两个日期不是同一年,则两个日期间的天数等于两日期间相隔年份的天数加上,靠前日期在本年所剩天数加上靠后日期在本年的天数。

#include<stdio.h>

/*
计算此天在这一年中是第几天
*/
int getDaysInYear(int year,int month,int day)
{
int i,daynum=day;
int days[12]={31,29,31,30,31,30,31,31,30,31,30,31};
if((year%4==0&&year%100!=0)||year%400==0)
{
days[1]=29;
}
else
{
days[1]=28;
}
for(i=0;i<month-1;i++)
{
daynum+=days[i];
}
return daynum;
}
//获取两个年份之间的年份的天数
int getDaysByYear(int year1,int year2)
{
int dayCount=0;
int i=year1+1;
for(i;i<year2;i++)
{
if((i%4==0&&i%100!=0)||i%400==0)
{
dayCount+=366;
}
else
{
dayCount+=365;
}
}
return dayCount;
}


//获取这一年中剩余的天数
int remainDays(int year,int days)
{
int remainDays;
if((year%4==0&&year%100!=0)||year%100==0)
{
remainDays=366-days;
}
else
{
remainDays=365-days;
}
return remainDays;
}


void main()
{
int dayCount=0;
int year1,month1,day1,dinyear1;
int year2,month2,day2,dinyear2;
printf("请输入年月日\n");
scanf("%d %d %d",&year1,&month1,&day1);
dinyear1=getDaysInYear(year1,month1,day1);
dayCount+=remainDays(year1,dinyear1);
printf("请输入年月日\n");
scanf("%d %d %d",&year2,&month2,&day2);
dinyear2=getDaysInYear(year2,month2,day2);
if(year1==year2)
{
dayCount=dinyear2-dinyear1;
}
else
{
dayCount+=getDaysByYear(year1,year2);
dayCount+=dinyear2;
}
printf("两个日期间有%d天\n",dayCount);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值