博客
关于我
求两个日期差值问题
阅读量:328 次
发布时间:2019-03-04

本文共 2195 字,大约阅读时间需要 7 分钟。

为了计算两个日期之间的天数,我们首先需要将输入的日期分解为年、月、日。然后,确定较小和较大的日期。接着,逐月、逐年地增加天数,直到达到较大的日期。需要考虑闰年的影响,尤其是2月的天数。通过循环处理每个月份的天数,当月份天数不足时,进入下一个月或年份。

步骤详解

  • 读取输入并分解日期

    • 读取两个日期字符串。
    • 分解为年、月、日。
  • 比较日期大小

    • 确定较小和较大的日期,作为开始和结束日期。
  • 初始化变量

    • sumDays 记录总天数。
    • month 数组存储每个月的天数。
  • 闰年判断

    • 编写函数 leapYear 判断闰年。
  • 月天数设置

    • 编写函数 setMonth 根据闰年设置2月的天数。
  • 计算天数

    • 使用循环逐月、逐年地增加天数,直到达到结束日期。
    • 处理月份和年份的变化,包括闰年影响的调整。
  • 输出结果

    • 打印计算得到的总天数。
  • 代码实现

    #include 
    #include
    using namespace std;bool leapYear(int year) { if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { return true; } else { return false; }}void setMonth(int year, int month[]) { if (leapYear(year)) { month[1] = 29; } else { month[1] = 28; }}void Compare(int &minDate, int &maxDate) { if (minDate > maxDate) { int temp = minDate; minDate = maxDate; maxDate = temp; }}int dateDifference(int month[], int year1, int year2, int month1, int month2, int day1, int day2) { int sumDays = 0; while (year1 != year2 || month1 != month2 || day1 != day2) { if (day2 <= month[month2]) { day2++; sumDays++; } else { if (month2 < 12) { month2++; day2 = 1; } else { year2++; setMonth(year2, month); month2 = 1; day2 = 1; } } } return sumDays;}int main() { int minDate, maxDate; cin >> minDate >> maxDate; Compare(minDate, maxDate); int maxYear = maxDate / 10000; int minYear = minDate / 10000; int month1 = (maxDate / 100) % 100; int month2 = (minDate / 100) % 100; int day1 = maxDate % 100; int day2 = minDate % 100; int month[13]; setMonth(minYear, month); int sumDays = dateDifference(month, maxYear, minYear, month1, month2, day1, day2); cout << sumDays << endl; return 0;}

    代码解释

  • leapYear 函数:判断给定年份是否为闰年。闰年的条件是能被4整除但不能被100整除,或者能被400整除。

  • setMonth 函数:根据闰年判断,设置2月的天数为29或28。

  • Compare 函数:交换两个日期的大小顺序,确保 minDate 小于 maxDate

  • dateDifference 函数:计算两个日期之间的天数。使用循环逐月、逐年增加天数,直到达到结束日期,并处理月份和年份的变化。

  • main 函数

    • 读取输入并分解为年、月、日。
    • 比较日期大小并交换顺序。
    • 初始化月份天数数组。
    • 调用 dateDifference 函数计算天数。
    • 输出结果。
  • 通过这种方法,可以准确计算两个日期之间的天数,包括处理闰年和跨年的情况。

    转载地址:http://dumq.baihongyu.com/

    你可能感兴趣的文章
    OpenCV VideoCapture.get()参数详解
    查看>>
    opencv videocapture读取视频cap.isOpened 输出总是false
    查看>>
    opencv waitKey() 函数理解及应用
    查看>>
    OpenCV 中的图像转换
    查看>>
    OpenCV 人脸识别 C++实例代码
    查看>>
    OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
    查看>>
    Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
    查看>>
    opencv 模板匹配, 已解决模板过大程序不工作的bug
    查看>>
    OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
    查看>>
    opencv&Python——多种边缘检测
    查看>>
    opencv&python——高通滤波器和低通滤波器
    查看>>
    OpenCV+Python识别车牌和字符分割的实现
    查看>>
    OpenCV-Python接口、cv和cv2的性能比较
    查看>>
    OpenCV/Python/dlib眨眼检测
    查看>>
    opencv1-加载、修改、保存图像
    查看>>
    opencv10-形态学操作
    查看>>
    opencv11-提取水平直线和垂直直线
    查看>>
    opencv12-图像金字塔
    查看>>
    opencv13-基本阈值操作
    查看>>
    opencv14-自定义线性滤波
    查看>>