如何计算两个(年-月-日)中间的间隔天数

Posted 人生列车

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何计算两个(年-月-日)中间的间隔天数相关的知识,希望对你有一定的参考价值。

给出任意两个时间,计算其间隔天数应该如何进行?
思路一:
以日期较小的一个为参考对象,然后将日期一天天的加上去,直到和第二个日期完全相等,设置一个计数器(day++)来统计天数。
思路二:
上边的问题是将整个问题视为一个整体进行解决,那么正是因为问题的复杂性,为了使用编程来更好的模块化解决,我们引入参考日期(1900-01-01)。将两个日期都与参考日期进行对比,计算出天数差。而后根据天数差做一个减法,得到二者之间的天数差。
思路三:
在思路二的基础上进一步进行改进。(思路二存在的问题是若询问的日期是小于参考日期的,则会出现负数,这将给问题的解决带来不必要的麻烦)我们将两个要查询的日期都和他们对应的年份的一月一号作为基准的参考日期,然后计算出三个天数差(其中有两个天数差的计算方法是一样的),最后得出结果。
思路……(欢迎留言讨论)
方案三解决步骤:
首先要能够判断出对应的年份是否是闰年(闰年是364天,否则为365天)
而后要能够求出对于任意所给日期,找出它和自己对应年份一月一日的日期差。
最后求得三个差值,计算出真正的日期差。
下面是用C语言简单的实现的一个处理:
技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 using namespace std;
 5 
 6 int tianxia[2][12]={
 7     {31,28,31,30,31,30,31,31,30,31,30,31},
 8     {31,29,31,30,31,30,31,31,30,31,30,31}
 9 };
10 
11 int isPrime(int year){
12     if(year%4==0&&year%100!=0 || year%400==0)
13         return 1;
14     else
15         return 0;
16 }
17 
18 int main()
19 {
20     int a,b;
21     scanf("%d%d",&a,&b);
22     if(a<b)
23         a^=b;b^=a;a^=b;
24     ///经过上边的操作后,日期a将大于日期b
25     int yeara=a/10000;
26     int moutha=(a%10000)/100;
27     int daya=(a%100);
28 
29     int yearb=b/10000;
30     int mouthb=(b%10000)/100;
31     int dayb=(b%100);
32 
33     int day1,day2,day3;
34     day1=day2=day3=0;
35 
36     for(int i=0;i<moutha-1;i++){
37             printf("%d : %d\n",i+1,tianxia[isPrime(yeara)][i]);
38         day1+=tianxia[isPrime(yeara)][i];
39     }
40     day1+=daya-1;
41 
42     for(int i=0;i<mouthb-1;i++){
43             printf("%d : %d\n",i+1,tianxia[isPrime(yearb)][i]);
44         day2+=tianxia[isPrime(yearb)][i];
45     }
46     day2+=dayb-1;
47 
48     for(int i=yearb;i<yeara;i++){
49         if(isPrime(i)==0)day3+=365;
50         else day3+=366;
51     }
52     int ans = day3+day1-day2;
53     printf("The ans is :%d  %d  %d  %d",ans,day1,day2,day3);
54     return 0;
55 }
简单解决代码

 

以上是关于如何计算两个(年-月-日)中间的间隔天数的主要内容,如果未能解决你的问题,请参考以下文章

VB计算两个日期时间的间隔

excel中如何计算出 两个日期之间相差是多少年、月、日? 日期的格式是:2011-9-7。

php 计算两个日期相隔多少年,多少月,多少天

怎么用excel计算两个日期之间的间隔年限?

golang 获取AB两个日期相差多少天

如何用excel计算两个日期之间相差的年数和月数