两个日期相差的天数计算以及关于闰年的相关计算
日期计算一直算是即简单又令人抓头的问题。
本次代码以“yyyymmdd”的两个日期,计算两个日期相差的天数。
总体的计算方式:
1、令date1存储小的日期,date2存储大的日期;
2、先忽略年份,计算出date2、date1中month+day到年头的天数,用两者天数相减即解决了除去年份部分的天数;
3、先算出date2和date1的年份差,年份差*365天 + 相间的闰年数即为年份中所差的天数。
4、结果 = 步骤2+步骤3的值
#include<iostream>
#include<algorithm>
using namespace std;
int month[13] = {0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};//初始化每个月份的天数
struct {int year, month, day;
}d1,d2;
int main(){int date1,date2; //存储输入的两个日期 cin >> date1 >> date2;if(date1 > date2) swap(date1, date2);//令date1存储小的日期、date2存储大的日期 d1.year = date1/10000; d1.month = date1%10000/100; d1.day = date1%100;//截取对应部分的日期 d2.year = date2/10000; d2.month = date2%10000/100; d2.day = date2%100;for(int i = 1; i < 13; ++i)month[i] += month[i - 1]; // 令每个month[i]表示该月份之前的所有天数,如2月及其之前的所有天数 int ans = month[d2.month - 1] + d2.day - month[d1.month-1] - d1.day;//先计算日期2到年头的日期,减去,日期1到年头的日期。 if(d1.year % 4 == 0 && d1.year%100 || d1.year % 400 == 0) //如果日期1为闰年且月份大于2了,就是减少了1天 if(d1.month > 2) ans--;if(d2.year % 4 == 0 && d2.year%100 || d2.year % 400 == 0)//如果日期2为闰年且月份大于2月了,就是加少了1天 if(d2.month > 2) ans++;//算式 = 两个日期的年份差 + 日期2的闰年数量 - 日期1的闰年数量。 ans += month[12] * (d2.year- d1.year) + (d2.year/4 - d2.year/100 + d2.year/400) - (d1.year/4 - d1.year/100 + d1.year/400);cout << ans;return 0;
}
两个日期相差的天数计算以及关于闰年的相关计算相关推荐
- 计算两个日期相差的天数
JavaBean类 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calen ...
- mysql 查出相差年数_MySQL计算两个日期相差的天数、月数、年数
MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...
- java 计算日期相差天数_Java 计算两个日期相差的天数
当我们需要计算两个日期相差的天数怎么办呢,今天我们就来用 Java 比较两个日期相差的天数,最简单的方法,直接上代码: 第一种,Date类型计算public static int differentD ...
- mysql计算两个月份之间的差值_MySQL计算两个日期相差的天数、月数、年数
MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...
- java计算剩余天数_JAVA 比较两个日期相差的天数
在实际的应用中,我们经常会比较两个日期相差的天数,下面我们通过java方法判断两个日期所差的额天数. 具体内容,请看下面的代码: package com.jd.jr.fclient.test; imp ...
- python计算两个日期相差的天数的代码
如下资料是关于python计算两个日期相差的天数的代码,希望能对各位朋友有一些好处. d1 = datetime.datetime(2008, 2, 16) d2 = datetime.datetim ...
- JAVA 比较两个日期相差的天数的方法比较
本文转自http://blog.csdn.net/shiyuezhong/article/details/9196803,所有权力归原作者所有. 在测试工作中经常会使用到比较两个日期相差的天数,我之前 ...
- (C++)设计一个日期类Date,包括年、月、日等私有数据成员。要求实现日期的基本运算,包括某日期加上指定天数、某日期减去指定天数、两个日期相差的天数等。
C++面向对象程序设计课后作业第239页第5题 题目要求:设计一个日期类Date,包括年.月.日等私有数据成员.要求实现日期的基本运算,包括某日期加上指定天数.某日期减去指定天数.两个日期相差的天数等 ...
- PHP如何计算两个日期相差的天数?星期数?月数?年数?
废话不多说, 直接使用一个叫TimeHelper的Composer库即可,非常方便. 第一步, 加载composer composer require zjkal/time-helper 第二步, 引 ...
最新文章
- 《The Coaching Booster》问与答
- Spring全局异常处理的三种方式
- 微信浏览器打开网页被拦截了?Mindjump快速解决微信屏蔽网址用户打不开的难题...
- 安卓开发入门到精通!免费Android高级工程师学习资源,系列篇
- 使用 ADO.NET连接SQL Azure
- Jdk8 中文 api(百度网盘免费下载)
- 一加七pro计算机没有记录了,尽享速度与激情:一加7T Pro 迈凯伦版评测
- Google Guava与字符串操作相关的类
- CodeForces55A - Flea travel 解题报告
- 京东前台PC首页系统技术详解
- 美国第三季度GDP超预期增长2.6%,铁矿石期货跌4%创新低,欧洲央行加息75个基点
- Java:每日获取稳定可用免费代理ip(仅供日常使用,请勿用作他途)
- HTML5 案例学习笔记
- 企业微信SCRM的设计理念是什么?和CRM有什么不同?
- 一种使用可满足性模数理论模型检查可编程逻辑控制器系统的恶意软件检测方法
- ue4html插件,【UE4插件Mirror】全球超千万Maya用户终于可以高质量实时渲染了
- Matlab算法DSP移植验证,DSP计算机作业 自适应噪声抵消LMS算法Matlab仿真
- Flowable 数据库表结构 ACT_GE_BYTEARRAY
- 黄金年初仍将延续多头格局
- NYoj88 汉诺塔(一)