计算两个日期的相邻时间

##问题A 日期差值
题目链接来源codeup

计算两个日期的相邻时间
注意坑点:

  1. 闰年的判断,4,100,400;
  2. 如果统一到距离00010101的日期,注意当前年是闰年时,算月份和日期时考虑2月29。

AC 代码:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int c2n(char c){
 return int(c)-48;
}
int t2n(char t[]){
  //输入8位字符串的日期,列如20190630 
  //输出距离00010101的天数 
 int yy,mm,dd;
 int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
 yy=(((c2n(t[0])*10+c2n(t[1]))*10+c2n(t[2]))*10+c2n(t[3]));
 mm=c2n(t[4])*10+c2n(t[5]);
 dd=c2n(t[6])*10+c2n(t[7]);
 //to 00010101
 int sum=0;
 for(int i=1;i<yy;i++){
  if((i%400==0)||((i%100!=0&&i%4==0))){
   sum+=366;
  }
  else sum+=365;
 }
 for(int j=1;j<mm;j++){
  if(j==2){
   if((yy%400==0)||((yy%100!=0&&yy%4==0))){
    sum+=1;
   }//算月份的时候当前年是闰年要考虑2月+1 
  }
  sum+=month[j-1];
 }
 sum+=dd;
 return sum;
}

int main(){
 char a[9]; 
 char b[9];
 while(scanf("%s",a)!=EOF){  
  scanf("%s",b);
  int timea=t2n(a);
  int timeb=t2n(b);
  printf("%d\n",abs(timea-timeb)+1);
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值