当我们回想往事时会不会感叹时间流逝,往事如烟,暮然回首,物是人非……

额……不扯了,现在进入主题,当别人问你多大的时候,你总是会说:我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;
}

一万天也是一个具有有重要意义的日子,快来计算你的一万天吧!

我的第一万天是多少?(日期计算器)相关推荐

  1. ABAP 获取期间第一天和最后一天的日期

    根据期间获取第一天和最后一天的日期,可以使用本篇演示的两个函数,避免字符串拼接的方式. 根据期间获取第一天和最后一天 FIRST_DAY_IN_PERIOD_GET: 获取某期间第一天的日期,依据公司 ...

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

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

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

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

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

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

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

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

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

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

  7. 【Java】淘宝网店(计算某日是一年当中的第几天/日期计算器...)

    题目描述: 解题思路: 这是一个变相的日期计算器.只不过2.3.5.7.11月算1天,其他7个月算2天. 既然是一个变相的日期计算器,那就写一个日期计算器,然后加以修改即可.那么,日期计算器怎么写呢? ...

  8. 淘宝网店一变相日期计算器

    NowCoder在淘宝上开了一家网店.他发现在月份为素数的时候,当月每天能赚1元:否则每天能赚2元.现在给你一段时间区间,请你帮他计算总收益有多少. 链接:https://www.nowcoder.c ...

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

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

最新文章

  1. 九章量子计算机 科学杂志,张礼立 : 中国 “九章”量子计算机到底厉害在哪?...
  2. target tile component.js load logic
  3. 蜡笔小新里的钢达姆机器人怎么画_写字机器人好用吗? 组装就花了5个小时 还要学习软件、录入字体...
  4. DDD理论学习系列(13)-- 模块
  5. ubuntu php.ini 配置,ubuntu下配置PHP+JSON模块(apache) | 学步园
  6. 九种设计模式在Spring中的应用
  7. 力扣-231 2的幂
  8. 单片机交通灯灯c语言程序,关于LED模拟交通灯单片机C语言程序设计
  9. Linux安装搜狗拼音和谷歌拼音输入法
  10. 免费好用的视频格式转换器是哪个呢
  11. 【开源】发卡程序/会员/分站/三级分销/对接易码/免签支付/完美运营
  12. Spring Boot 错误页配置
  13. 【安全篇 / 反病毒】(5.6) ❀ 01. 反病毒的基本配置 ❀ FortiGate 防火墙
  14. 计算机桌面背景设成白色,电脑桌面背景变白色的了怎么处理啊?
  15. Facet Kernel详解、Random Walk随机游走算法详解
  16. 程序人生--hello‘s P2P(From Program to Process)
  17. OGG抽取进程异常一例
  18. python在煤矿的用途-矿用非金属制品检测前处理方法研究
  19. Python 命名关键字形参
  20. xshell 5评估期已过,不能使用的解决办法

热门文章

  1. 2021年高压电工复审模拟考试及高压电工考试试题
  2. PHP 精准加减乘除
  3. 传智健康-检查项管理
  4. AutoCAD 打开CAD会提示许可检出超时
  5. 谷歌亲儿子Flutter记录!不可错过的个人小知识点!
  6. 中国企业价值评估系统 v3.0 官网
  7. html富强民主鼠标特效,鼠标点击弹出 “富强 民主 ”特效
  8. JTS中TestBuilder
  9. linux 启动 iso文件下载,使用Grub2引导硬盘上的iso文件
  10. 阅读 Meta-SR:A Magnification-Arbitrary Network for Super-Resolution