计算2个日期之间的天数

 

#include <iostream>
using namespace std;
int main(){
	int y1,m1,d1,y2,m2,d2;
	int num1[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
	int num2[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
	cin>>y1>>m1>>d1;
	cin>>y2>>m2>>d2;
	int dif,sum=0;
	dif=y1-y2;//求出年份之间的差值 
	
	if(dif>0){//2个日期不是同一年的 
	
		for(int i=1;i<dif;i++){
			if((y1+i)%4==0&&((y1+i)%100!=0||(y1+i)%400==0)) sum+=366;
			else sum+=365;
		}
		//计算起始年m1月d1日到本年12月31日的天数
		
		if((y1)%4==0&&((y1)%100!=0||(y1)%400==0)){
			for(int i=m1+1;i<=12;i++) sum+=num1[i-1];
			sum+=num1[m1-1]-d1;
		}else{
			for(int i=m1+1;i<=12;i++) sum+=num2[i-1];
			sum+=num2[m1-1]-d1;
		
		}
		
		//计结束年从1月1日到m2月d2日的距离 
		if((y1)%4==0&&((y1)%100!=0||(y1)%400==0)){
			//sum+=d1;
			for(int i=1;i<m2;i++) sum+=num1[i-1];
			sum+=d2;
		}else{
			for(int i=1;i<m2;i++) sum+=num2[i-1];
			sum+=d2;
			
		}
	}else{//2个日期是同一年的 
		if((y1)%4==0&&((y1)%100!=0||(y1)%400==0)){
			if(m1==m2){ // 2个日期是同一个月的 
				sum=d2-d1;
			}else{// 2个日期不是同一个月的 
				for(int i=m1+1;i<m2-1;i++) sum+=num1[i-1];
				sum=num1[m1-1]-d1+d2;
			} 
		}else{
			if(m1==m2){ // 2个日期是同一个月的 
				sum=d2-d1;
			}else{// 2个日期不是同一个月的 
				for(int i=m1+1;i<m2-1;i++) sum+=num2[i-1];
				sum=num2[m1-1]-d1+d2;
			} 
		} 
		
	}
	cout<<sum;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值