计算两个日期之间的天数

时间限制:1秒        内存限制:128M
题目描述
给定两个日期,计算相差的天数。比如2010-1-1和2010-1-3相差2天。

输入描述
共两行: 

第一行包含三个整数startYear,startMonth,startDay,分别是起始年、月、日。 

第二行包含三个整数endYear,endMonth,endDay,分别是结束年、月、日。 相邻两个整数之间用单个空格隔开。 年份范围在1~3000。保证日期正确且结束日期不早于起始日期。

输出描述
输出一个整数,即是两个日期相差的天数。

样例
输入
2008 1 1
2009 1 1
输出
366
提示
闰年被定义为能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它们不是闰年。闰年的2月份有29天。

#include<iostream>
#include<algorithm>
using namespace std;
long long s;
int a[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31},sY,sM,sD,eY,eM,eD;
int main() {
	cin>>sY>>sM>>sD;
	cin>>eY>>eM>>eD;
	for(int i=sY+1; i<eY; i++) {
		if(i%4==0&&i%100!=0||i%400==0) s+=366;
		else s+=365;
	}
	if(sY%4==0&&sY%100!=0||sY%400==0) a[2]=29;
	else a[2]=28;
	if(sY==eY&&sM!=eM){
		for(int i=sM+1;i<=eM-1;i++) s+=a[i];
		s+=a[sM]-sD;
		s+=eD;
	}
	else if(sY!=eY){
		s+=a[sM]-sD;
		for(int i=sM+1;i<=12;i++) s+=a[i];
		s+=eD;
		for(int i=1;i<eM;i++) s+=a[i];
	} 
	else if(sY==eY&&sM==eM) s+=eD-sD;
	cout<<s;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值