#include<stdio.h>
#include<string.h>
#include<math.h>
#define ll long long
using namespace std;
int judge(int y)
{
if(y%400==0) return 1;
if(y%4==0&&y%100!=0) return 1;
return 0;
}
int yue1[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
int yue2[13]= {0,31,29,31,30,31,30,31,31,30,31,30,31};
ll js(int y,int m,int d)
{
ll tmp=(y-1)/4-(y-1)/100+(y-1)/400;
tmp+=(y-1)*365;
for(int i=1; i<m; i++)
{
if(i==2&&judge(y))
tmp++;
tmp+=yue1[i];
}
tmp+=d;
return tmp;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
char a[1003],b[1003];
scanf("%s %s",a,b);
int n1=0,n2=0,y1=0,y2=0,r1=0,r2=0,day=0;
int l=strlen(b);
int f=0;
for(int i=0; i<l; i++)
{
if(b[i]==':')
{
f=1;
break;
}
}
int la=strlen(a);
int ma=0;
for(int i=0; i<la; i++)
{
if(a[i]==':')
{
ma++;
continue;
}
if(ma==0)
{
n1=(n1*10)+a[i]-'0';
}
else if(ma==1)
{
y1=(y1*10)+a[i]-'0';
}
else if(ma==2)
{
r1=(r1*10)+a[i]-'0';
}
}
long long day1=js(n1,y1,r1);
if(f)
{
int lb=strlen(b);
int mb=0;
for(int i=0; i<lb; i++)
{
if(b[i]==':')
{
mb++;
continue;
}
if(mb==0)
{
n2=(n2*10)+b[i]-'0';
}
else if(mb==1)
{
y2=(y2*10)+b[i]-'0';
}
else if(mb==2)
{
r2=(r2*10)+b[i]-'0';
}
}
long long day2=js(n2,y2,r2);
long long ans=day2-day1;
if(ans<0)
ans=-ans;
printf("%lld\n",ans);
}
else
{
int lb=strlen(b);
int day2=0;
for(int i=0;i<lb;i++)
{
day2=day2*10+b[i]-'0';
}
//printf("%d\n",day2);
while(day2--)
{
r1++;
if(judge(n1))
{
if(r1>yue2[y1])
{
y1++;
r1=1;
}
if(y1>12)
{
y1=1;
n1++;
}
}
else
{
if(r1>yue1[y1])
{
y1++;
r1=1;
}
if(y1==13)
{
y1=1;
n1++;
}
}
}printf("%4d:%02d:%02d\n",n1,y1,r1);
}
}
}
个人模板 计算年月日
最新推荐文章于 2022-07-12 00:00:48 发布