利用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;
}
#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;
}
相关文章推荐
- MSSQL计算两个日期相差的工作天数
- asp.net中计算两个日期之间的相差的天数的方法(vb)
- 计算两个日期之间相差的工作天数
- JavaScript计算两个日期相差天数,周数
- 计算两个日期相差的天数、月数
- C#计算两个日期之间相差的天数
- 计算两个日期相差天数
- 如何计算两个日期之间相差天数
- javaScript 计算两个日期的天数相差~~~
- flex计算两个日期之间相差的天数
- ex的DateChooser控件中如何利用selectableRange属性计算选中两个日期间天数的例子
- 怎样用javaScript计算两个日期字符串相差的天数?
- 计算两个日期之间相差的天数(JS)
- MSSQL 计算两个日期相差的工作天数的语句
- c# 计算两个日期之间相差的天数
- JAVA计算两个日期之间相差的天数
- PHP中怎样计算两个日期相差的天数
- JS 计算两个日期相差天数
- 21-计算出两个日期相差的天数
- 计算两个日期相差的天数