如题所示,这个算法就是写起来麻烦一点,不过还是很简单的,思路清晰就非常好做

思路:用两套数组分别存储每个月的天数,分别是闰年和非闰年,分别为num1[] 和 num2[];
**然后就是先计算年和年之间的差距{
相距一年:为第一年的剩下日子+第二年开始的日子
相距一年以上:为初始年的剩下日子+末尾年开始的日子+中间年份日子
相距几个月:计算几个月的日期差
}**

以上思路就是如此,代码也很简单,附上相关注释,一看就懂,不要觉得多,都是一个个的函数,一看就能明白

#include <iostream>
using namespace std;
int num1[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
int num2[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int frontday(int year,int month,int day){  //计算这年过了多少天了int sum=0;if((year%100!=0 &&year%4==0) || year%400==0){for(int i=0;i<month-1;i++){sum+=num1[i];}return sum+day;}else{for(int i=0;i<month-1;i++){sum+=num2[i];}return sum+day;}
}
int backday(int year,int month,int day){//计算这年还剩多少天int sum=0;if((year%100!=0 &&year%4==0) || year%400==0){for(int i=0;i<month-1;i++){sum+=num1[i];}return 366-(sum+day);}else{for(int i=0;i<month-1;i++){sum+=num2[i];}return 365-(sum+day);}
}
int isyear(int year){ //计算某年是否是闰年,返回不同天数if((year%100!=0 &&year%4==0) || year%400==0){return 366;}else return 365;
}
int JudgeMonthDay(int year,int month1,int month2,int day1,int day2){      //计算几个月之间的天数,这个思路同计算不同年之间的天数int sum=0;if((year%100!=0 &&year%4==0) || year%400==0){if(month1==month2)  return day2-day1;if((month2-month1)==1){return (num1[month1-1]-day1+day2);}if((month2-month1)>1){sum = num1[month1-1]-day1+day2;for(int i=month1+1;i<=month2-1;i++){sum+=num1[i-1];}return sum;}}else{if(month1==month2)  return day2-day1;if((month2-month1)==1){return num2[month1-1]-day1+day2;}if((month2-month1)>1){sum = num2[month1-1]-day1+day2;for(int i=month1+1;i<=month2-1;i++){sum+=num2[i-1];}return sum;}}
}
void main(){cout<<"请输入两个日期,分别为年月日,都用空格隔开"<<endl;int year1,month1,day1;int year2,month2,day2;cin>>year1>>month1>>day1>>year2>>month2>>day2;int sum=0;    //以下分类讨论计算不同年之间天数if((year2-year1)<0) cout<<"应该先输入小的年份,输入错误";if((year2-year1)==0){cout<<JudgeMonthDay(year1,month1,month2,day1,day2)<<endl;}if((year2-year1)==1)   cout<<backday(year1,month1,day1)+frontday(year2,month2,day2)<<endl;if((year2-year1)>1){sum = backday(year1,month1,day1)+frontday(year2,month2,day2);for(int i=year1+1;i<=year2-1;i++){sum+=isyear(i);}cout<<sum<<endl;}system("pause");
}

附上一个可以用来测试的链接地址:
http://day.9om.com/

经典算法:计算两个日期之间的天数相关推荐

  1. 经典算法 计算两个日期之间的天数

    如题所示,这个算法就是写起来麻烦一点,不过还是很简单的,思路清晰就非常好做 思路:用两套数组分别存储每个月的天数,分别是闰年和非闰年,分别为num1[] 和 num2[];         **然后就 ...

  2. JavaScript:实现计算两个日期之间的天数算法(附完整源码)

    JavaScript:实现计算两个日期之间的天数算法 const isLeap = (year) => {if (year % 400 === 0) return trueelse if (ye ...

  3. java 两日期的周数_利用 Java 中 Calendar 计算两个日期之间的天数和周数

    利用 Java 中 Calendar 计算两个日期之间的天数和周数 前言 究竟什么是一个 Calendar 呢? 中文的翻译就是日历, 那我们立刻可以想到我们生活中有阳 (公) 历阴 (农) 历之分它 ...

  4. 如何利用计算机计算天数,如何应用Win10系统电脑中的计算器计算两个日期之间的天数?...

    如何应用Win10系统电脑中的计算器计算两个日期之间的天数? 相信很多小伙伴都有在使用windows10系统的电脑,其中的计算器如何才能用来计算两个日期之间的天数呢?方法很简单,下面小编就来为大家介绍 ...

  5. 微软面试题目(一) 计算两个日期之间的天数

    微软的面试,没能参加啊,只好打听了下题目,其中一题是在20分钟内写出:计算两个日期之间天数的方法.昨天晚上想了一下,今天实现了一下,经过调试,差不多一个小时才弄好,惭愧啊 代码如下: /******* ...

  6. sql年月日加减法,计算两个日期之间的天数

    1.年月日加减法(时间字段为  hiredate,表名为 emp) DB2 selecthiredate -5 day as hd_sub_5day,hiredate +5 day as hd_add ...

  7. 计算两个日期之间的天数,你知道哪些函数能够计算呢?

    有时候我们需要计算两个日期之间的天数,一般情况下只需要计算一两个的话可以直接口算,但是整个表格的日期都需要计算出他们之间的天数,还是用口算的方法吗?当然不能这么浪费时间!Excel中有计算两个日期之间 ...

  8. java怎么计算相隔多少天_java计算两个日期之间相差天数和相隔天数详解

    大家看到文章标题"两个日期之间相差天数和相隔天数",是否有疑惑呢!从中文字面理解,"相差"和"相隔"是有区别的,然而就是这些区别害死很多人, ...

  9. Go获取n天前或后的日期、日期转秒时间戳、计算两个日期之间的天数差

    获取n天前或后的日期: // GetBeforeTime 获取n天前的秒时间戳.日期时间戳 // _day为负则代表取前几天,为正则代表取后几天,0则为今天 func GetBeforeTime(_d ...

  10. php 求两个日期之间的天数_php计算两个日期之间的天数

    php计算两个日期之间的天数2017-12-21 14:29 我有两个日期: 开始日期: 2007-03-24 结束日期: 2009-06-26 现在我需要找到这两者之间的区别在以下形式: 2年,3个 ...

最新文章

  1. access突然需要登录_早知道早好,微信小程序登录开发需要注意的事项
  2. 重读图灵经典之作,九条反驳意见引人深思
  3. FIE2020-2020年的论文相关记录
  4. [异常解决] How make ubuntu use Google Search
  5. 从当前活动获取根视图
  6. c语言visit函数指针,C++中的函数指针总结
  7. 云计算关键领域安全指南.v2.1-云安全联盟.pdf
  8. idea+tomcat+struts2 搭建一个web实例
  9. IDEA中安装MyBatis Log Plugin插件完整显示执行的mybatis的sql语句
  10. 利用pickle保存模型
  11. 稀疏自编码器_基于tensorflow实现稀疏自编码和在推荐中的应用
  12. 整理LVS架构压力测试工作
  13. 算法之【辗转相除法】
  14. ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(三)密码修改以及密码重置...
  15. 如何调用VS自带的数据源选择对话框
  16. 德标螺纹规格对照表_(完整word版)德标与国标对照表
  17. cmd命令窗口快捷键与小技巧
  18. 新版白话空间统计(24):中位数中心
  19. [Matlab] subs 函数 将符号变量代入符号表达式不需要加引号
  20. python用cartopy包画地图_python绘制地图的利器Cartopy使用说明

热门文章

  1. H2O自动化机器学习框架介绍与搭建笔记
  2. Office 2013 Excel 转换 Word
  3. 电脑下载了自动捆绑怎么办?一招秒杀!
  4. c语言开发谷歌浏览器插件,用Chrome学编程
  5. QQ能上网浏览器无法上网
  6. source-map讲解
  7. java 多定时任务_多机部署之定时任务完整方案
  8. 20189320《网络攻防》第八周作业
  9. 【程序员面试金典】有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。注意这次的网格中有些障碍点是不能走的。
  10. 甩开炎热去15℃的四川秘境度假,这里有藏于田园风景的纯白民宿