【C++】---日期计算器
【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++】---日期计算器相关推荐
- 【C++】日期类+日期万年历+日期计算器
对于日期类,我们主要实现一下日期类的基本函数,构造,拷贝构造,运算符的重载,析构.当然这里运算符的重载需要实现的还是挺多的,如:=.<.>.<=.>=.等 #include & ...
- javascript 日期计算器 推算几天后的日期 计算日期差
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- c语言日期加减天数,日期计算器
一 完成的功能 注意:此日历只能用于计算1982年10月15日以及以后的日期 1.日期+/-天数=返回日期(处理:1.如果+/-一个负的天数的情况 2.如果加之后,或减之后的日期非法) 2.两个日期 ...
- 日期计算器-java(含界面)
日期计算器 一. 系统描述 完成日期计算器的编写. 系统功能: 1.输入日期,完成星期几的计算,并输出星期值 2.输入日期加天数,完成日期加/减天数的计算,并输出新日期 3.输入日期以及一个年月日,完 ...
- python日期计算器 青少年编程电子学会python编程等级考试二级真题解析2021年12月
目录 python日期计算器 一.题目要求 1.编程实现 2.输入输出 3.评分标准
- c++Date(日期)类方法实现日期计算器
1.日期类应该具有什么功能 计算两个日期间的间隔时间 给定一个日期,计算出减少x天数后的日期 给定一个日期,减少x天数后的日期 2.日期类的具体实现 需要注意的是: 为了提高的安全性,我只将要实现对象 ...
- Python用Tkinter实现日期计算器
废话不多说,直接上代码 import tkinter import datetime from tkinter import * from tkinter.ttk import * from tkin ...
- 用C语言写一个日期计算器
首先,我们应知道日期计算器包括哪些功能 1.明天的日期 2 .n天后的日期 3.两个日期之间的天数 我们先从第一个功能开始,首先创建一个日期的结构体,包括:年.月.日. struct date {in ...
- 【C++】日期计算器
文章目录 一.前言 二.日期类的实现 1.Date类中默认成员函数的使用 1.构造函数 2.析构函数 3.拷贝构造函数 4.赋值运算符重载 5.const成员函数 6.取地址操作符重载和const取地 ...
最新文章
- html5显示字幕信息,HTML5 Placeholder实现input背景文字提示效果
- /etc/passwd 文件详解
- yii验证系统学习记录,基于yiicms(一)写的太长了,再写一篇(二)
- 【LeetCode笔记】5.最长回文子串(Java、动态规划、字符串)
- php thikn_与ThinkPHP等框架结合
- FTP服务器配置固定IP才能访问
- [Java] 蓝桥杯ALGO-125 算法训练 王、后传说
- hbase windows 单机版安装
- 智慧园区中心服务平台建议方案
- CentOS系统中常用查看日志命令
- Java到底能做什么事情呢?
- 循环冗余校验码CRC原理与LFSR循环码编码器原理
- 前端如何进行seo优化
- 暴躁是企业家的性格?
- Android开发之智能聊天机器人
- java砍价源码_(JAVA)仿拼多多砍价算法
- 浅谈网页设计的形式美法则
- 图形渲染与UWA论坛,mipi官网
- MacBook 如何在合上盖子后还能继续用外接键盘和显示器工作?
- 自下而上:万物进化简史,罗辑思维强烈推荐,优生学在欧美造的孽令人震惊...