我的第一万天是多少?(日期计算器)
当我们回想往事时会不会感叹时间流逝,往事如烟,暮然回首,物是人非……
额……不扯了,现在进入主题,当别人问你多大的时候,你总是会说:我22了!然后别人会说,都奔三了,结婚了没有啊,难道你会在回一句,我连女朋友都没有……过。真是悲催呀!额……又扯远了。
好了,为了避免尴尬,别人问你多大的时候,你可以跟他说,我已经七千多天了,哈哈哈。那么这个换算是如何进行的呢?
接下来我来告诉你:
#include<iostream>
using namespace std;class Date
{
public:Date(int year = 1990, int month = 1, int day = 1):_year(year), _month(month), _day(day){//如果日期规格不正确,那么定义一个日期if (!(_year > 0 && _month > 0 && _month<13&& _day>0 && _day < GetMonthDays(_year, _month))){_year = 1990;_month = 1;_day = 1;}}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;}//日期加上天数,返回日期Date operator+(const int days){if (days<0)//如果天数为负数,直接转为减法{return (*this) - (0 - days);}Date temp(*this);//定义一个临时变量,temp._day += days;//将天数加到临时变量的天上面int _daysinmonth = 0;while (temp._day>(_daysinmonth=GetMonthDays(temp._year, temp._month))){temp._day -= _daysinmonth;if (12 == temp._month)//如果当前月份为12,那么年加1,月置于1{temp._year += 1;temp._month = 1;}else{temp._month += 1;}}return temp;//处理完成之后,返回这个日期}//日期减去天数,返回日期Date operator-(const int days){if (days < 0)//如果天数是负数,直接转为加法{return (*this) + days;}Date temp(*this);temp._day -= days;while (temp._day < 0){if (1 == temp._day)//如果当前月份为1月,那么年减1,月份置于12{temp._year -= 1;temp._month = 12;}else{temp._month -= 1;}temp._day += GetMonthDays(temp._year, temp._month);}return temp;}//日期之间的减法,返回相差的天数int operator-(const Date& d){Date _mindate(*this);Date _maxdate(d);if (_mindate > _maxdate){_mindate = _maxdate;_maxdate = *this;}int count = 0;while (_mindate < _maxdate){++_mindate;//让小的日期加1的同时将计数器加1++count;}return count;}Date&operator++(){*this = *this+1;return *this;}Date&operator++(int){Date temp = *this;*this = *this + 1;return temp;}Date&operator--(){*this = *this - 1;return *this;}Date&operator--(int){Date temp = *this;*this = *this - 1;return temp;}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;}return false;}bool operator==(const Date& d){if (_year == d._year && _month == d._month && _day == d._day){return true;}return false;}bool operator<(const Date& d){return !(*this>d || *this == d);}bool operator!=(const Date& d){return !(*this == d);}private://获得每月的天数int GetMonthDays(int year,int month){int DaysInMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };if (IsLeap(year) && month == 2){DaysInMonth[month] += 1;}return DaysInMonth[month];}//判断是不是瑞年bool IsLeap(int year){if (((0 == year % 4) && (0 != year % 100)) || (0 == year % 400)){return true;}return false;}//重载输出操作符friend ostream& operator << (ostream&_cout, const Date&d){_cout << d._year << "-" << d._month << "-" << d._day;return _cout;}private:int _year;int _month;int _day;
};int main()
{//Date d;//Date d1(2017, 3, 22);//Date d2(2017, 2, 30);Date d3(1995, 7, 11);cout << d3 + 10000<< endl;//我的第一万天是多少cout << d3 - 100 << endl;//出生前百天日期Date d4(2017, 3, 23);cout << d4 - d3 << endl;//我活了多少天return 0;
}
一万天也是一个具有有重要意义的日子,快来计算你的一万天吧!
我的第一万天是多少?(日期计算器)相关推荐
- ABAP 获取期间第一天和最后一天的日期
根据期间获取第一天和最后一天的日期,可以使用本篇演示的两个函数,避免字符串拼接的方式. 根据期间获取第一天和最后一天 FIRST_DAY_IN_PERIOD_GET: 获取某期间第一天的日期,依据公司 ...
- c语言日期加减天数,日期计算器
一 完成的功能 注意:此日历只能用于计算1982年10月15日以及以后的日期 1.日期+/-天数=返回日期(处理:1.如果+/-一个负的天数的情况 2.如果加之后,或减之后的日期非法) 2.两个日期 ...
- 日期计算器-java(含界面)
日期计算器 一. 系统描述 完成日期计算器的编写. 系统功能: 1.输入日期,完成星期几的计算,并输出星期值 2.输入日期加天数,完成日期加/减天数的计算,并输出新日期 3.输入日期以及一个年月日,完 ...
- c++Date(日期)类方法实现日期计算器
1.日期类应该具有什么功能 计算两个日期间的间隔时间 给定一个日期,计算出减少x天数后的日期 给定一个日期,减少x天数后的日期 2.日期类的具体实现 需要注意的是: 为了提高的安全性,我只将要实现对象 ...
- 用C语言写一个日期计算器
首先,我们应知道日期计算器包括哪些功能 1.明天的日期 2 .n天后的日期 3.两个日期之间的天数 我们先从第一个功能开始,首先创建一个日期的结构体,包括:年.月.日. struct date {in ...
- 【C++】日期计算器
文章目录 一.前言 二.日期类的实现 1.Date类中默认成员函数的使用 1.构造函数 2.析构函数 3.拷贝构造函数 4.赋值运算符重载 5.const成员函数 6.取地址操作符重载和const取地 ...
- 【Java】淘宝网店(计算某日是一年当中的第几天/日期计算器...)
题目描述: 解题思路: 这是一个变相的日期计算器.只不过2.3.5.7.11月算1天,其他7个月算2天. 既然是一个变相的日期计算器,那就写一个日期计算器,然后加以修改即可.那么,日期计算器怎么写呢? ...
- 淘宝网店一变相日期计算器
NowCoder在淘宝上开了一家网店.他发现在月份为素数的时候,当月每天能赚1元:否则每天能赚2元.现在给你一段时间区间,请你帮他计算总收益有多少. 链接:https://www.nowcoder.c ...
- 【C++】日期类+日期万年历+日期计算器
对于日期类,我们主要实现一下日期类的基本函数,构造,拷贝构造,运算符的重载,析构.当然这里运算符的重载需要实现的还是挺多的,如:=.<.>.<=.>=.等 #include & ...
最新文章
- 九章量子计算机 科学杂志,张礼立 : 中国 “九章”量子计算机到底厉害在哪?...
- target tile component.js load logic
- 蜡笔小新里的钢达姆机器人怎么画_写字机器人好用吗? 组装就花了5个小时 还要学习软件、录入字体...
- DDD理论学习系列(13)-- 模块
- ubuntu php.ini 配置,ubuntu下配置PHP+JSON模块(apache) | 学步园
- 九种设计模式在Spring中的应用
- 力扣-231 2的幂
- 单片机交通灯灯c语言程序,关于LED模拟交通灯单片机C语言程序设计
- Linux安装搜狗拼音和谷歌拼音输入法
- 免费好用的视频格式转换器是哪个呢
- 【开源】发卡程序/会员/分站/三级分销/对接易码/免签支付/完美运营
- Spring Boot 错误页配置
- 【安全篇 / 反病毒】(5.6) ❀ 01. 反病毒的基本配置 ❀ FortiGate 防火墙
- 计算机桌面背景设成白色,电脑桌面背景变白色的了怎么处理啊?
- Facet Kernel详解、Random Walk随机游走算法详解
- 程序人生--hello‘s P2P(From Program to Process)
- OGG抽取进程异常一例
- python在煤矿的用途-矿用非金属制品检测前处理方法研究
- Python 命名关键字形参
- xshell 5评估期已过,不能使用的解决办法
热门文章
- 2021年高压电工复审模拟考试及高压电工考试试题
- PHP 精准加减乘除
- 传智健康-检查项管理
- AutoCAD 打开CAD会提示许可检出超时
- 谷歌亲儿子Flutter记录!不可错过的个人小知识点!
- 中国企业价值评估系统 v3.0 官网
- html富强民主鼠标特效,鼠标点击弹出 “富强 民主 ”特效
- JTS中TestBuilder
- linux 启动 iso文件下载,使用Grub2引导硬盘上的iso文件
- 阅读 Meta-SR:A Magnification-Arbitrary Network for Super-Resolution