相对日期法计算日期差
相对日期法计算天数差
前言
C++大作业编写银行系统中问到了计算日期差的方法, 在此记录一种方便快捷的相对日期法, 同时收录一些日期计算相关的其他细节问题, 具体如下
正文
闰年判断
众所周知, 当一个非整百年的年份能够被4
整除时, 该年份为闰年; 当一个整百年份能被400
整除时, 该年份为闰年.
在Date
类中编写isLeap
函数判断一个年份是否为闰年, 代码如下
1 | bool Date::isLeap(int m_year) |
建表
由于一年中每月天数不同, 在计算当年内两日期天数差时不方便, 可以采用建表查表的方法创建一个数组, 记录每月一号到当年一月一号的天数
程序中, 使用DAYS_EACH_MONTH
数组存放这组数据
1 | // date.h |
计算相对日期
计算每个日期距离1年1月1日
的天数, 再用欲求的两个日期的相对日期天数作减法, 算得两日期相距的天数.
使用date_trans
函数将一个Date
类由绝对日期转换成相对日期
1 | // date.h |
计算year年month月day日
的相对日期步骤如下
计算年
首先计算year年1月1日
距1年1月1日
的天数差, 由于月日均相同, 至于要计算相差几年即可, 过程中需要注意, 闰年有366
天, 判断该年为闰年时需要为总天数再+1
代码如下
1 | // date.cpp |
计算月
根据之前建立的DAYS_EACH_MONTH
数组, 快速获得month月1日
距离1月1日
的天数并加入总和中
代码如下
1 | // ... |
计算日
由于前面已经算得年月之间的日期差, 此时只需求出year年month月1日
距离year年month月day日
的天数差, 将日期中的day
加入天数总和中即可
1 | // ... |
计算天数差
使用date_trans
函数获得两日期的相对日期值, 再作差即可得到两日期的天数差
1 | // date.cpp |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.