C/C++完成两个日期之间相隔天数的计算

两个日期之间相隔天数的计算网上有许多的软件,这里主要介绍如何使用C/C++语言来完成这样的功能。

程序编写的主要思路

  • 01

    两个日期相隔天数的计算,首先可以将两个日期转换成time_t(从指定日期至1970年1月1日0时0分0秒相隔的秒数),然后计算两个time_t的秒数差,最后用此秒数差除以24*3600秒就可以得到相隔的天数。所以程序中需要建立两个函数,一个是将日期转换成time_t的函数,一个是计算日期相隔天数的函数。

程序的具体实现

  • 01

    建立程序的主体结构: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<time.h> int  get_days(const char* from, const char* to); time_t convert(int year,int month,int day); int main() { const char* from="2013-3-15"; const char* to="2015-8-14"; int days=get_days(from,to); printf("From:%s\nTo:%s\n",from,to); printf("%d\n",days); system("pause"); return 0; } get_days函数是计算两个日期相隔天数的主要函数,主要实现从字符串中提取相应的数据和最后差值的计算;convert函数主要是将日期转换成秒值。两个函数的关系是get_day将会调用convert。

  • 02

    convert函数的实现: time_t convert(int year,int month,int day) { tm info={0}; info.tm_year=year-1900; info.tm_mon=month-1; info.tm_mday=day; return mktime(&info); } 这里需要使用的是一个tm的结构体,该结构体包含很多信息,其中最为重要的就是年、月、日、时、分、秒。还有一个重要的内部函数就是mktime该函数可以将tm结构体转换成秒值也就是time_t类型。函数主要实现的方法就是新建一个tm结构体,然后将所有项赋值为0,再将年月日更新入tm结构体,最后使用mktime函数计算秒值并返回。

  • 03

    get_days函数的实现: int  get_days(const char* from, const char* to) { int year,month,day; sscanf(from,"%d-%d-%d",&year,&month,&day); int fromSecond=(int)convert(year,month,day); sscanf(to,"%d-%d-%d",&year,&month,&day); int toSecond=(int)convert(year,month,day); return (toSecond-fromSecond)/24/3600; } 这个函数最为重要的就是使用sscanf命令完成字符串中数字部分的获取。一旦获取到年月日再代入函数convert就可计算出秒值,最后将两个秒值相减再除以一天的秒数即可得到结果。

  • 04

    完整的程序: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<time.h> int  get_days(const char* from, const char* to); time_t convert(int year,int month,int day); int main() { const char* from="2013-3-15"; const char* to="2015-8-14"; int days=get_days(from,to); printf("From:%s\nTo:%s\n",from,to); printf("%d\n",days); system("pause"); return 0; } time_t convert(int year,int month,int day) { tm info={0}; info.tm_year=year-1900; info.tm_mon=month-1; info.tm_mday=day; return mktime(&info); } int  get_days(const char* from, const char* to) { int year,month,day; sscanf(from,"%d-%d-%d",&year,&month,&day); int fromSecond=(int)convert(year,month,day); sscanf(to,"%d-%d-%d",&year,&month,&day); int toSecond=(int)convert(year,month,day); return (toSecond-fromSecond)/24/3600; }

  • 05

    运行结果可以看出2013-3-15到2015-8-14一共相隔882天。

(0)

相关推荐

  • 怎么快速算出任意两个日期之间相隔的天数?

    在生活中经常需要计算出任意两个日期之间相隔的天数,例如,计算出和他/她在一起的天数,如果单纯的去心算出这两个日期之间相隔的天数,还是比较困难的,所以借助一定的工具那是必须的,可能很多人就想去网上下载一 ...

  • 在excel表格中如何计算两个日期之间的天数?

    在excel输入一个开始日期和一个结束日期,怎么计算两个日期之间的天数,我们来学习一下. 步骤 打开电脑桌面,单击右键-新建一个excel文件. 打开excel后,输入一个开始日期和结束日期. 表格中 ...

  • Win10计算器怎么计算两个日期之间的天数?

    win10系统自带了计算器,想要计算两个日期之间的天数,该怎么计算呢?下面我们就来看看详细的教程. 1.首先,鼠标右击屏幕左下角的Win图标,然后在弹出的菜单中点击"运行". 2. ...

  • 如何应用Win10系统电脑中的计算器计算两个日期之间的天数?

    相信很多小伙伴都有在使用windows10系统的电脑,其中的计算器如何才能用来计算两个日期之间的天数呢?方法很简单,下面小编就来为大家介绍.具体如下:1. 首先,右键桌面左下角的开始菜单,在弹出选项中 ...

  • 怎么在WPS表格中计算两个日期之间的天数

    我们在使用WPS表格的时候,想要计算两个日期之间的天数,该怎么操作呢?今天就跟大家介绍一下怎么在WPS表格中计算两个日期之间的天数的具体操作步骤.1. 首先打开电脑,找到想要编辑的WPS表格,双击打开 ...

  • excel中计算两个日期之间相差天数的方法

    小编致力于为大家奉献最有效的,让大家能够解决掉问题,但是大家也都知道,每个人遇到的情况都是不一样的,大家在看小编的同时,除了跟随操作,也需要自己的思考,举一反三的解决问题,这样才会变得更加有内涵,成为 ...

  • 用函数求两个日期之间的天数和工作日天数

    用DATEDIF函数来求两个日期之间的天数,用NETWORKDAYS函数来求两个日期之间的工作日天数. DATEDIF函数来求两个日期之间的天数 01 在R3单元格输入=DATEDIF(B3,O3,& ...

  • 如何计算两个日期之间相隔月数和年数

    计算两个日期之间的月数和年数,主要是利用datedif函数,现在就分享使用的具体过程,供参考使用. 操作方法 01 首先启动excel2003,打开一份产品报废清单数据. 02 选择单元格d2,通过键 ...

  • 如何运用EXCEL中如何计算两个日期之间的天数

    操作方法 01 我们在工作中经常需要计算前后两个日期间隔的天数,比如计算某一项重要任务的倒计时.我想,您肯定也像我一样,不愿意扳着手指或拿着月历表一天一天的数吧!其实,用Excel可以很轻松地计算出两 ...