计算日期差值

 

题目描述:

有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天

输入:

有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

输出:

每组数据输出一行,即日期差值

样例输入:
20110412
20110422
样例输出:
11
 1 #include<stdio.h>
 2 #define ISYEAP(x) (x%100!=0 && x%4==0 || x%400==0)? 1 : 0
 3 int dayofmonth[13][2]={
 4 0,0,
 5 31,31,
 6 28,29,
 7 31,31,
 8 30,30,
 9 31,31,
10 30,30,
11 31,31,
12 31,31,
13 30,30,
14 31,31,
15 30,30,
16 31,31
17 };
18 struct Date{
19 int day;
20 int month;
21 int year;
22 void nextday()
23 {
24     day++;
25     if(day>dayofmonth[month][ISYEAP(year)]){
26         day = 1;
27         month++;
28         if(month>12)
29         {
30             year++;
31             month=1;
32         }
33     }
34 }
35 };
36 int buf[5001][13][32];
37 int Abs(int x)
38 {
39     return x<0?-x:x;
40 }
41 int main()
42 {
43     Date tmp;
44     int cnt=0;
45     tmp.day = 1;
46     tmp.month = 1;
47     tmp.year = 0;
48     while(tmp.year != 5001)
49     {
50         buf[tmp.year ][tmp.month ][tmp.day ]=cnt;
51         tmp.nextday ();
52         cnt++;
53     }
54     int d1,m1,y1;
55     int d2,m2,y2;
56     while(scanf("%4d%2d%2d",&y1,&m1,&d1)!=EOF){
57         scanf("%4d%2d%2d",&y2,&m2,&d2);
58         printf("%d\n",Abs(buf[y2][m2][d2]-buf[y1][m1][d1]+1));
59     }
60     return 0;
61 }

PS:如果问题需要输出某个特定日期,是那年的第几天,则只需要将该日期与原点日期的天数减去那年元旦与原点日期天数。

转载于:https://www.cnblogs.com/rickhsg/p/3644674.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值