求解任意两日期间相隔的天数

来源:互联网 发布:嘉兴行知小学排名 编辑:程序博客网 时间:2024/05/24 05:48

闰年判断

if((year%400==0)||year%4==0&&year%100!=0)

则是闰年


#include<iostream>
using namespace std;

class Date
{
    private:
    int year,month,day;

public:

.........

};


int mon(int year,int month)

 {

 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

   return 31;

else if(month==4||month==6||month==9||month==11)

  return 30;

else if(year%400==0||(year%4==0&&year%100!=0)

return 29;

 else

return 28;

 }


/*注:日期类的定义省略*/

/*一个·日期相加n天,后的日期*/

int data(int n)

{

  day+=n;

int y=year;

int m=month;

while(day>mon(y,m))

  {

 day-=mon(y,m);

    m++;

  if(m>12)

     {

m=1;

  y++;

     }

  }

}

}

//相减,同理

/****************************************************/

/*任意两个日期间的天数*/

#include<iostream>
using namespace std;

class Date
{
    private:
    int year,month,day;

public:

Date operator&(Date &p)

 {

  int flag;

     if(year!=p.year) { flag=1;  if(year<p.year) flag=-1; }

            else if(month!=p.month) { flag=1;  if(month<p.monthr) flag=-1; }

               else

                return day-p.day;

 

 int y1,m1,d1,y2,m2,d2;

 if(flag==-1)

{ y1=year; m1=month; d1=day; y2=p.year; m2=p.month; d2=p.day;  }

else

{ y2=year; m2=month; d2=day; y1=p.year; m1=p.month; d1=p.day;  }

int i=y1,j=m1;

int s=0;

 while(i!=y2||j!=m2)

 {

   s=s+mon(i,j);

     j++;

  if(j>12)

  { j=1; s++ }

   }

  s=s+d2-d1;

  s=s*flag;

return s;

};







1 0
原创粉丝点击