【C++】 日期计算器

:可能有时你也会被这样的问题所烦恼,你想要知道自己活了多少天的话,乍一想这该怎么计算呢,捋一捋,要计算平年闰年,每个月多少天等等等苦恼着,下面我们通过C++来实现一个日期计算器,来帮你解决这一切的烦恼。

实现功能

  • 1.年与年,月与月,天与天的加减法。
    2.日期加减一个天数。
    3.计算两个日期相隔多少天。

实现难点

  • 1.引用的正确使用。
    2.不能很好的控制每个月份的天数,我们不妨直接写一个函数接口,把每个月天数存在数组中后面直接很方便的调用就好了。
    3.平年闰年的判断及实现。
  • 总结:这是C++的最基本的一个日期类的实现,可以更好的让我们巩固一下前面所学的默认成员函数,函数重载,缺省参数,以及引用的正确使用,对类和对象有了初步的了解,可以说是入门者的试金石。

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>
#pragma once
using namespace std;class  Date
{public://构造函数Date(int year = 2018, int month = 1, int day = 1){_year = year;_month = month;_day = day;}~Date()//析构函数{}//拷贝构造函数Date(const Date& d)//必须传引用,否则会出现无限递归{_year = d._year;_month = d._month;_day = d._day;}//赋值重载Date& operator=(const Date& d){if (this != &d){_year = d._year;_month = d._month;_day = d._day;}return *this;}bool IsLeapyear(int year)//判断是否为平年{return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);}int GetmonthDay(int year, int month){static int monthDay[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };if (IsLeapyear(year) && month == 2){return 29;}else{return monthDay[month];}}bool operator==(const Date& d){return _year == d._year&&_month == d._month&&_day == d._day;}bool operator!=(const Date& d){return !(*this == d);}bool operator>(const Date& d){if ((_year > d._year) || (_year == d._year && _month > d._month) || (_year == d._year && _month == d._month  && _day > d._day)){return true;}else{return false;}}bool operator>=(const Date& d){return (*this>d || (*this == d));}bool operator<(const Date& d){if ((_year < d._year) || (_year == d._year && _month < d._month) || (_year == d._year && _month == d._month  && _day < d._day)){return true;}else{return false;}}Date& operator+=(int day){_day += day;while (_day > GetmonthDay(_year, _month))    {_day =_day- GetmonthDay(_year, _month);_month += 1;if (_month > 12){++_year;_month = 1;}}return *this;}Date operator+(int day)//不会改变原来日期值,日期加上天数{Date ret= *this;//拷贝this指针return ret += day;}Date& operator-=(int day){if (day < 0){return *this += (-day);}_day = _day - day;while (_day < 1){_month -= 1;if (_month == 0){_month = 12;--_year;}_day += GetmonthDay(_year, _month);}return *this;}Date operator-(int day){Date ret = *this;return ret -= day;}int operator-(const Date& d){int flag =1;int day = 0;Date max = *this;Date min = d;if (*this < d){max = d;min = *this;flag = -1;}  while (min != max){min++;++day;}return day*flag;}void PrintDate1(){cout << "原来的日期" << _year << "-" << _month << "-" << _day << endl;}void PrintDate2(){cout << "加日期后的日期" << _year << "-" << _month << "-" << _day << endl;}void PrintDate3(){cout << "加日期后的日期" << _year << "-" << _month << "-" << _day << endl;}void PrintDate4(){cout << "减掉日期后的日期" << _year << "-" << _month << "-" << _day << endl;}void PrintDate5(){cout << "日期减掉日期后的日期" << _year << "-" << _month << "-" << _day << endl;}private:int _year;int _month;int _day;
};int main()
{Date d1(2018, 1, 1);d1.PrintDate1();Date d2;d2=d1 + 66;d2.PrintDate2();Date d3;d3 += 66;d3.PrintDate3();Date d4 = d1 - 66;d4.PrintDate4();Date d5=d1-d4;d5.PrintDate5();system("pause");return 0;
}

【C++】---日期计算器相关推荐

  1. 【C++】日期类+日期万年历+日期计算器

    对于日期类,我们主要实现一下日期类的基本函数,构造,拷贝构造,运算符的重载,析构.当然这里运算符的重载需要实现的还是挺多的,如:=.<.>.<=.>=.等 #include & ...

  2. javascript 日期计算器 推算几天后的日期 计算日期差

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  3. c语言日期加减天数,日期计算器

    一  完成的功能 注意:此日历只能用于计算1982年10月15日以及以后的日期 1.日期+/-天数=返回日期(处理:1.如果+/-一个负的天数的情况 2.如果加之后,或减之后的日期非法) 2.两个日期 ...

  4. 日期计算器-java(含界面)

    日期计算器 一. 系统描述 完成日期计算器的编写. 系统功能: 1.输入日期,完成星期几的计算,并输出星期值 2.输入日期加天数,完成日期加/减天数的计算,并输出新日期 3.输入日期以及一个年月日,完 ...

  5. python日期计算器 青少年编程电子学会python编程等级考试二级真题解析2021年12月

    目录 python日期计算器 一.题目要求 1.编程实现 2.输入输出 3.评分标准

  6. c++Date(日期)类方法实现日期计算器

    1.日期类应该具有什么功能 计算两个日期间的间隔时间 给定一个日期,计算出减少x天数后的日期 给定一个日期,减少x天数后的日期 2.日期类的具体实现 需要注意的是: 为了提高的安全性,我只将要实现对象 ...

  7. Python用Tkinter实现日期计算器

    废话不多说,直接上代码 import tkinter import datetime from tkinter import * from tkinter.ttk import * from tkin ...

  8. 用C语言写一个日期计算器

    首先,我们应知道日期计算器包括哪些功能 1.明天的日期 2 .n天后的日期 3.两个日期之间的天数 我们先从第一个功能开始,首先创建一个日期的结构体,包括:年.月.日. struct date {in ...

  9. 【C++】日期计算器

    文章目录 一.前言 二.日期类的实现 1.Date类中默认成员函数的使用 1.构造函数 2.析构函数 3.拷贝构造函数 4.赋值运算符重载 5.const成员函数 6.取地址操作符重载和const取地 ...

最新文章

  1. html5显示字幕信息,HTML5 Placeholder实现input背景文字提示效果
  2. /etc/passwd 文件详解
  3. yii验证系统学习记录,基于yiicms(一)写的太长了,再写一篇(二)
  4. 【LeetCode笔记】5.最长回文子串(Java、动态规划、字符串)
  5. php thikn_与ThinkPHP等框架结合
  6. FTP服务器配置固定IP才能访问
  7. [Java] 蓝桥杯ALGO-125 算法训练 王、后传说
  8. hbase windows 单机版安装
  9. 智慧园区中心服务平台建议方案
  10. CentOS系统中常用查看日志命令
  11. Java到底能做什么事情呢?
  12. 循环冗余校验码CRC原理与LFSR循环码编码器原理
  13. 前端如何进行seo优化
  14. 暴躁是企业家的性格?
  15. Android开发之智能聊天机器人
  16. java砍价源码_(JAVA)仿拼多多砍价算法
  17. 浅谈网页设计的形式美法则
  18. 图形渲染与UWA论坛,mipi官网
  19. MacBook 如何在合上盖子后还能继续用外接键盘和显示器工作?
  20. 自下而上:万物进化简史,罗辑思维强烈推荐,优生学在欧美造的孽令人震惊...

热门文章

  1. Win10 笔记本 解决屏幕忽明忽暗,自动降低亮度问题
  2. 【云原生 | Kubernetes 实战】18、K8s 安全实战篇之 RBAC 认证授权(上)
  3. CentOS 6.5 安装使用iscsi-initiator
  4. Modbus RS485 设备的串口调试
  5. MIS系统(12)- 订单管理
  6. Add Binary 二进制求和
  7. python 容联云测试短信接口
  8. banner中居中的page显示完全,其余显示百分之20--仿网易云首页轮播图
  9. 赛尔无人机 | 航测新标杆 Phantom 4 RTK
  10. IOS端微信小程序API播放视频无效,应该这样做