您的位置:首页 > 运维架构 > Linux

利用Struct计算两个日期的相差的天数

2014-11-20 20:37 411 查看
本程序演示了日期的基本计算方法,目的计算两个日期之间相差的天数,并且计算填入的日期当天是星期几,此演示程序主要是使用VS2010,但这个程序可以支持Linux的使用,如需在Linux上使用请自行修改。

#include "stdafx.h"

#include <iostream>

using namespace std;

struct Date{
int year;
int month;

    int day;

};

//计算是否为闰年

bool isLeapYear(int year)

{

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

}

//计算每个月的天数

int daysOfMonth(int month,int year)

{

   switch(month)

   {

   case 1: 

   case 3:

   case 5:

   case 7:

   case 8:

   case 10:

   case 12:
     return 31;
      break;

   case 2:return 28+isLeapYear(year);

          break;

   case 4: 

   case 6:

   case 9:

   case 11:
     return 30;
     break;

   default:return 0;

   }

}

//计算从1月1号到现在有多少天

int daysOfDate(Date date)

{

   int days=0;

   for(int i=1;i<date.year;i++)

   {

      days+=365+isLeapYear(i);

   }

   for (int i=0;i<date.month;i++)

   {
  days+=daysOfMonth(i,date.year);

   }

   days+=date.day;

   return days;

}

int main()


Date d1,d2;
std::cout<<"Plese input two date,following format(yyyy mm dd)"<<endl;
std::cin>>d1.year>>d1.month>>d1.day;
std::cin>>d2.year>>d2.month>>d2.day;
std::cout<<"Check the input date  "<<d1.year<<" "<<d1.month<<" "<<d1.day<<endl;
std::cout<<"Check the input date  "<<d2.year<<" "<<d2.month<<" "<<d2.day<<endl;
int daysdff=0;
int daysd1=daysOfDate(d1);
int daysd2=daysOfDate(d2);
if(daysd1>daysd2)
{
  daysdff=daysd1-daysd2;
}
else
{
  daysdff = daysd2-daysd1;
}
int weekdayd1=daysd1%7;
int weekdayd2=daysd2%7;
std::cout<<"Calculation of two date by a few days  "<<daysdff<<endl;
std::cout<<"Input date is the day of the week  "<<weekdayd1<<"    "<<weekdayd2<<endl;;

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struct vs2010 linux switch