IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言计算两个日期之间相差的天数 -> 正文阅读

[C++知识库]C语言计算两个日期之间相差的天数

设计思路

1、比较起始和结束的年份大小,起始年是否大于结束年,如果起始时间大于输入的结束时间,则把两个时间(年月日)互换值,再计算两个时间相差的天数。

2、判断是否起始时间小于结束时间,直接计算两个时间相差的天数。

3、判断是否为闰年。

代码如下

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int s_year, s_month, s_day, s_sum = 0;
    static int days = 0;
    static int day = 0;
    int e_year, e_month, e_day, e_sum = 0;
    static int leap = 0;
    int tmp, tmp1, tmp2; 

    printf("输入起始时间,格式为:年,月,日(xxxx,xx,xx)\n");
    scanf_s("%d,%d,%d", &s_year, &s_month, &s_day);

    printf("输入结束时间,格式为:年,月,日(xxxx,xx,xx)\n");
    scanf_s("%d,%d,%d", &e_year, &e_month, &e_day);

    if (s_year > e_year) //判断哪个年份大,如果起始时间大于结束时间,则互换值
    {
        tmp = s_year;
        s_year = e_year;
        e_year = tmp;
        tmp1 = s_month;
        s_month = e_month;
        e_month = tmp1;
        tmp2 = s_day;
        s_day = e_day;
        e_day = tmp2;
    }

    while (s_year < e_year)
    {
        if (e_year % 400 == 0 || (e_year % 4 == 0 && e_year % 100 != 0)) /*判断是否为闰年*/
        {
            days = days + 366; /*闰年*/
        }
        else
        {
            days = days + 365; /*平年*/
        }
        e_year--;
    }

    switch (s_month)
    {
    case 1:s_sum = 0;
        break;
    case 2:s_sum = 31;
        break;
    case 3:s_sum = 31 + 28;
        break;
    case 4:s_sum = 31 + 28 + 31;
        break;
    case 5:s_sum = 31 + 28 + 31 + 30;
        break;
    case 6:s_sum = 31 + 28 + 31 + 30 + 31;
        break;
    case 7:s_sum = 31 + 28 + 31 + 30 + 31 + 30;
        break;
    case 8:s_sum = 31 + 28 + 31 + 30 + 31 + 30 + 31;
        break;
    case 9:s_sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
        break;
    case 10:s_sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
        break;
    case 11:s_sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
        break;
    case 12:s_sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
        break;
    }

    s_sum = s_sum + s_day; /*计算起始日期天数*/

    switch (e_month)
    {
    case 1:e_sum = 0;
        break;
    case 2:e_sum = 31;
        break;
    case 3:e_sum = 31 + 28;
        break;
    case 4:e_sum = 31 + 28 + 31;
        break;
    case 5:e_sum = 31 + 28 + 31 + 30;
        break;
    case 6:e_sum = 31 + 28 + 31 + 30 + 31;
        break;
    case 7:e_sum = 31 + 28 + 31 + 30 + 31 + 30;
        break;
    case 8:e_sum = 31 + 28 + 31 + 30 + 31 + 30 + 31;
        break;
    case 9:e_sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
        break;
    case 10:e_sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
        break;
    case 11:e_sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
        break;
    case 12:e_sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
        break;
    }


    if (s_year % 400 == 0 || (s_year % 4 == 0 && s_year % 100 != 0))
    {
        if (e_month > 2)
        {
            day++;
        }
    }

    e_sum = e_sum + e_day; /*计算结束日期天数*/
    days = days - s_sum + e_sum + day; /*相差的天数*/

    printf("起始和结束日期相差了%d天\n", abs(days)); //因天数计算可能会出现负数,abs()函数可把相差的天数变成正数
    return 0;
}

运行结果

结果1:结束日期大于初始日期

结果2:初始日期大于结束日期?

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-24 14:45:41  更:2021-10-24 14:47:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:34:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码