#include<iostream>
using namespace std;
class Date
{
public:
int GetMonthDay(int year, int month)
{
static int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int day = days[month];
if((month == 2)&&(((year % 4 == 0)&&(year % 100 != 0))||(year%400 ==0)))
{
day+=1;
}
return day;
}
Date(int year = 2000, int month = 1, int day = 1)
{
_year = year;
_month = month;
_day = day;
}
Date(const Date& d)//拷贝构造函数
{
_year = d._year;
_month =d._month;
_day = d._day;
}
Date& operator+=(int day)//+=运算符重载
{
if(day < 0)
{
return *this -= -day;
}
_day += day;
while(_day > GetMonthDay(_year,_month))
{
_day -=GetMonthDay(_year,_month);
_month++;
if(_month == 13)
{
_year++;
_month = 1;
}
}
return *this;
}
Date& operator-=(int day)//-=运算符重载
{
if(day < 0)
{
return *this += -day;
}
_day -= day;
while(_day < 0)
{
_month--;
if(_month == 0)
{
_year--;
_month = 12;
}
_day +=GetMonthDay(_year,_month);
}
return *this;
}
Date& operator=(const Date& d)//赋值运算符重载
{
if(this !=&d)
{
_year = d._year;
_month = d._month;
_day = d._day;
}
}
Date& operator++()//前置++运算符重载
{
*this+=1;
return *this;
}
Date operator++(int)//后置++运算符重载
{
Date ret(*this);
*this +=1;
return ret;
}
bool operator<(const Date& d)
{
if(_year < d._year)
{
return 1;
}
else if (_year == d._year)
{
if(_month < d._month)
{
return 1;
}
else if(_month == d._month)
{
if(_day < d._day)
{
return 1;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
else
{
return 0;
}
}
int operator-(const Date&d)//-运算符重载,用于计算日期差
{
Date max = *this;
Date min = d;
if(*this < d)
{
max = d;
min = *this;
}
int day =0;
while(min <max)
{
++(min);
++day;
}
return day;
}
int _year;
int _month;
int _day;
};
int main()
{
//Date d1(2024,9,5);
int i,j,k;
cout <<"请输入初始日期的年"<<'\n';
cin>>i;
cout <<"请输入初始日期的月"<<'\n';
cin>>j;
cout <<"请输入初始日期的日"<<'\n';
cin>>k;
Date d1(i,j,k);
cout <<"您输入的日期为:"<<'\t'<< d1._year << '-' << d1._month << '-' << d1._day <<endl;
int select;
cout <<"请输入需要进行的操作"<<'\n';
cout <<"1.日期加运算"<<'\n';
cout <<"2.日期减运算"<<'\n';
cout <<"3.计算日期差"<<'\n';
cin >>select;
if(select == 1)
{
int day1;
cout <<"请输入需要加的天数"<<endl;
cin >> day1;
d1+=day1;
cout << d1._year << '-' << d1._month << '-' << d1._day <<endl;
}
else if (select ==2)
{
int day2;
cout <<"请输入需要减的天数"<<endl;
cin >> day2;
d1-=day2;
cout << d1._year << '-' << d1._month << '-' << d1._day <<endl;
}
else if(select == 3)
{
int i1,j1,k1;
cout <<"请输入目标日期年"<<'\n';
cin>>i1;
cout <<"请输入目标日期月"<<'\n';
cin>>j1;
cout <<"请输入目标日期日"<<'\n';
cin>>k1;
Date d2(i1,j1,k1);
cout <<"您输入的日期为:"<<'\t'<< d2._year << '-' << d2._month << '-' << d2._day <<endl;
int ret = d1-d2;
cout <<"两个日期只差为:"<<' ' << ret << "天" <<endl;
}
else
{
cout << "您的输入有误"<<endl;
}
return 0;
}
雪好像下整夜
- 粉丝: 126
- 资源: 2
最新资源
- 前段时期很火的听声辩位,我把它做出来了
- python文件,石头剪刀布
- c#写的B/S架构的仓库管理系统源码
- javaweb课程设计项目图书购物网站系统源代码+数据库+演示视频(满分项目)
- 882523063_4808_53.1.0.0_20240906144403_885080731_apkupdate.apk
- javaweb期末大作业-在线购书系统 jsp+Servlet+mysql采用mvc三层架构源码+数据库(满分项目)
- 整理的驾驶舱模式UI界面
- javaweb的jsp课程设计期末大作业-图书购物网站-基于JSP(MVC模式)和MySQL的网上图书购物系统源代码+数据库
- STM8L10x STM8S STM32F1 STM32F4 STM32F429 STM32LL1系列单片机库函数及例程
- c#写的网络抓包解析工具
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈