博客
关于我
求两个日期差值问题
阅读量: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/

    你可能感兴趣的文章
    php7.1.6 + redis
    查看>>
    php7中使用php_memcache扩展
    查看>>
    PHP7中十个需要避免的坑
    查看>>
    php7和PHP5对比的新特性和性能优化
    查看>>
    PHP7安装pdo_mysql扩展
    查看>>
    PHP7实战开发简单CMS内容管理系统(7) 后台登录架构 用户登录校验
    查看>>
    php7,从phpExcel升级到PhpSpreadsheet
    查看>>
    PHP8.1 + ThinkPHP实战指南:高效构建现代化网站的六大技巧
    查看>>
    PHP8中match新语句的操作方法
    查看>>
    PHP:第一章——PHP中常量和预定义常量
    查看>>
    PHP:第一章——PHP中的位运算
    查看>>
    phpcms
    查看>>
    phpcms 2008 product.php pagesize参数代码注射漏洞
    查看>>
    phpcms V9 自定义添加 全局变量{DIY_PATH}方法
    查看>>
    Redis五种核心数据结构的基本使用与应用场景
    查看>>
    Redis五种数据结构简介
    查看>>
    PHPCMS多文件上传和上传数量限制
    查看>>
    phpEnv的PHP集成环境
    查看>>
    PHPExcel一些基本设置总结
    查看>>
    phpexcel中文手册
    查看>>