C++实现日期类(Date类)的方法
发布时间 - 2026-01-10 22:26:21 点击率:次如下所示:
#include<iostream>
using namespace std;
class Date
{
public:
Date(int year = 1900, int month = 1, int day = 1) //构造
:_year(year)
, _month(month)
, _day(day)
{
if (!isInvalidDate(_year, _month, _day))
{
_year = 1900;
_month = 1;
_day = 1;
}
}
Date operator+(int count)
{
Date tmp(*this);
tmp._day += count;
ToCorrect(tmp);
return tmp;
}
Date operator-(int count)
{
Date tmp(*this);
tmp._day -= count;
ToCorrect(tmp);
return tmp;
}
Date& operator++() //前置++
{
(*this)++;
return *this;
}
Date operator++(int) //后置++
{
Date tmp(*this);
(*this)+=1;
return tmp;
}
Date& operator--()
{
(*this)--;
return *this;
}
Date operator--(int)
{
Date tmp(*this);
(*this)--;
return tmp;
}
int operator-(const Date &d)
{
int flag = 1;
Date max = *this;
Date min = d;
if (*this<d)
{
max = d;
min = *this;
flag = -1;
}
int count=0;
while (min != max)
{
++min;
count++;
}
return count*flag;
}
Date& operator+=(int day)
{
*this = *this + day;
return *this;
}
bool operator!=(const Date &d)
{
return !(*this == d);
}
bool operator<(const Date &d)
{
return !((*this>d)||(*this==d));
}
bool operator>=(const Date &d)
{
return !(*this<d);
}
bool operator>(const Date &d)
{
return (_year > d._year
|| (_year == d._year && _month > d._month)
|| (_year == d._year && _month == d._month && _day > d._day));
}
bool operator==(const Date &d)
{
return ((_year == d._year) && (_month == d._month) && (_day == d._day));
}
public:
bool IsLeapYear(int year)
{
if(year % 400 || (year % 4 && year % 100))
return true;
return false;
}
int YearsOfMonth(int year, int month)
{
int day;
int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
day = days[month];
if (month == 2)
day += IsLeapYear(year);
return day;
}
Date ToCorrect(Date &d)
{
if (d._day>YearsOfMonth(d._year, d._month))
{
while (d._day > YearsOfMonth(d._year, d._month))
{
d._day -= YearsOfMonth(d._year,d._month);
if (d._month == 12)
{
d._year++;
d._month = 1;
}
else
{
++d._month;
}
}
}
else
{
while (d._day <= 0)
{
if (d._month == 1)
{
d._year--;
d._month = 12;
}
else
{
--d._month;
}
d._day += YearsOfMonth(d._year, d._month);
}
}
return d;
}
bool isInvalidDate(int year, int month, int day)
{
if ((year < 1) || (month<0 || month>12) || (day<0 || day>YearsOfMonth(year,month)))
return false;
return true;
}
void Display()
{
cout << _year << "-" << _month << "-" << _day << endl;
}
friend istream& operator>>(istream& is, Date &d);
friend ostream& operator<<(ostream& os, const Date &d);
private:
int _year;
int _month;
int _day;
};
istream& operator>>(istream& is, Date& d)
{
cout << "请输入一个日期" << endl;
is >> d._year >> d._month >> d._day;
return is;
}
ostream& operator<<(ostream& os, const Date &d)
{
cout << d._year << "-" <<d. _month << "-" << d._day << endl;
return os;
}
int main()
{
/*Date d1(2016,8,18);
//d1.Display();
//d1 = d1++;
cout << d1 << endl;*/
//Date d1(2015, 12, 3);
//(d1++).Display(); //d1.operator++(&d1, 0);
//(++d1).Display(); //d1.operator++(&d1);
Date d1(2015, 12, 3);
Date d2(2015, 11, 1);
cout << (d1 - d2) << endl;
//Date d1(2015, 12, 3);
//Date ret = d1 + 40; //operator+
//ret.Display();
/*Date d1(2015, 12, 3);
Date ret = d1 + 40;
d1 = ret;
ret = d1 - 40;
ret.Display();*/
/*Date ret;
Date d2(2015, 1, 1);
ret = d2 - 1;
ret.Display();*/
return 0;
}
以上这篇C++实现日期类(Date类)的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# C++
# 日期类
# Date类
# C++日期类计算器的模拟实现举例详解
# C++实现日期类的示例详解
# C++日期类(Date)实现的示例代码
# C++类与对象之日期类的实现
# C++实现日期类(Date)
# C++ 如何实现一个日期类
# 给大家
# 希望能
# 请输入
# 所示
# 这篇
# 小编
# 大家多多
# day
# month
# _month
# _year
# int
# public
# year
# count
# operator
# ToCorrect
# tmp
# _day
# amp
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何快速生成凡客建站的专业级图册?
Laravel如何实现API版本控制_Laravel版本化API设计方案
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
如何用JavaScript实现文本编辑器_光标和选区怎么处理
如何构建满足综合性能需求的优质建站方案?
深入理解Android中的xmlns:tools属性
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
EditPlus中的正则表达式 实战(2)
音乐网站服务器如何优化API响应速度?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何在腾讯云免费申请建站?
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
如何挑选高效建站主机与优质域名?
如何在景安云服务器上绑定域名并配置虚拟主机?
Python文件异常处理策略_健壮性说明【指导】
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
西安专业网站制作公司有哪些,陕西省建行官方网站?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
装修招标网站设计制作流程,装修招标流程?
如何用搬瓦工VPS快速搭建个人网站?
微信小程序 wx.uploadFile无法上传解决办法
Laravel如何生成API文档?(Swagger/OpenAPI教程)
Laravel Fortify是什么,和Jetstream有什么关系
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
如何在万网自助建站中设置域名及备案?
大同网页,大同瑞慈医院官网?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Laravel如何自定义分页视图?(Pagination示例)
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
电商网站制作价格怎么算,网上拍卖流程以及规则?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
大连 网站制作,大连天途有线官网?
如何用好域名打造高点击率的自主建站?
实例解析angularjs的filter过滤器
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
佛山网站制作系统,佛山企业变更地址网上办理步骤?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
如何快速生成可下载的建站源码工具?

